Linq的最佳实践哪里有OR条款?

时间:2011-01-07 16:28:20

标签: c# linq

我发现使用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 ...

2 个答案:

答案 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();