我发现使用Linq,做一个WHERE选择器,其中多个子句用'AND'分隔很容易 - 但是我已经编写了下面的代码来执行'WHERE'查询的等效,并且'OR'分隔每个案例
任何人都可以提出更好的建议,因为每次连续都会感觉很糟糕。
var foo = new int[] { 0, 0, 1, 1, 2, 2, 3, 3 };
var bar = new int[] { 0, 2 };
var hum = new List<int>();
foreach (int i in bar)
hum.AddRange(foo.Where(a => a == i));
编辑:为AddRange更改了concat ...
答案 0 :(得分:1)
嗯,那段代码甚至不起作用。 Concat
不会修改它所调用的序列 - 它返回一个新序列,它是另外两个序列的串联。
在这种情况下,我想你想要:
var values = foo.Where(x => bar.Contains(x));
这种情况当然是特定的 - LINQ中没有“通用”OR子句。
答案 1 :(得分:0)
使用以下内容:
var hum = bar.Select(x => foo.Where(y => y == x)).SelectMany(z => z).ToList();