我有以下串列。
List<List<int>> paths = new List<List<int>>();
paths.Add(new List<int>() { 0,1 });
paths.Add(new List<int>() { 0, 2 });
paths.Add(new List<int>() { 0, 4 });
paths.Add(new List<int>() { 1, 2 });
paths.Add(new List<int>() { 0, 3 });
我有另一個這樣的 int 串列
List<int> ends = new List<int>(){3,4};
現在我需要過濾路徑中內部串列中的任何數字包含結束串列中的任何數字的記錄,對于本示例,這將是以下記錄。
{0,3}
{0,4}
我嘗試過這樣的事情
paths.Where(x => x.Where(y => ends.Contains(y))).ToList();
uj5u.com熱心網友回復:
paths.Where(x => x.Any(z => ends.Contains(z)))
uj5u.com熱心網友回復:
用于Any解決您的問題:
var res = paths.Where(list => list.Any(item => ends.Any(end => end==item))).ToList();
或更短
var res = paths.Where(list => list.Any(item => ends.Contains(item))).ToList();
結果:

uj5u.com熱心網友回復:
LINQ 語法將是一種表達方式:
var matches = (from p in paths
from e in ends
where p.Contains(e)
select p).Distinct();
uj5u.com熱心網友回復:
class Program
{
private static void Main(string[] args)
{
var paths = new List<List<int>>
{
new List<int>() { 0, 1 },
new List<int>() { 0, 2 },
new List<int>() { 0, 4 },
new List<int>() { 1, 2 },
new List<int>() { 0, 3 }
};
var ends = new List<int>(){3,4};
var results = paths.Where(x => ends.Any(x.Contains));
// display results
foreach(var result in results)
Console.WriteLine(JsonSerializer.Serialize(result));
}
}
//[0,4]
//[0,3]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/515640.html
標籤:C#林克拉姆达
上一篇:第一個非重復字符C#LINQ
