4

这可能是一个非常简单的 LINQ 问题。我正在使用 LINQ to SQL 并提取数据集。
我目前的代码是这样的:

var tempTable = (from p in dc.Live_Diffs
                    where p.RowNum = 50
                    select new CustomResult
                    {
                        RowNum = p.RowNum,
                        ED1 = p.ED1,
                        ED2 = p.ED2,
                        ED3 = p.ED3,
                        ED4 = p.ED4,
                        ED5 = p.ED5,
                        ED6 = p.ED6,
                        ED7 = p.ED7,
                        ED8 = p.ED8
                    }).ToList();

我如何指定 where 条件,如下所示"where p.RowNum is in the set: {50,60,70}"
我有一个列表或双打,我希望避免使用大量的"OR"条件......

非常感谢 - kcross

4

2 回答 2

5

像这样的东西应该适合你:

var listOfConditions = new List<int>{50,60,70};
var tempTable = (from p in dc.Live_Diffs
                             where listOfConditions.Contains(p.RowNum)
                             select new CustomResult
                             {   RowNum = p.RowNum ,
                                 ED1 = p.ED1,
                                 ED2 = p.ED2,
                                 ED3 = p.ED3,
                                 ED4 = p.ED4,
                                 ED5 = p.ED5,
                                 ED6 = p.ED6,
                                 ED7 = p.ED7,
                                 ED8 = p.ED8
                             }).ToList();
于 2012-04-17T18:57:59.687 回答
2

您创建要查找的数字的列表或数组:

List<int> rowNums = new List<int> { 50, 60, 70, };

然后使用 . 检查它是否在该列表中Contains()。Linq-Sql 会把它变成一个IN或一个OR's 的列表,我不记得是哪个了。

var tempTable = 
    (from p in dc.Live_Diffs 
    where rowNums.Contains(p.RowNum)
    select ....
于 2012-04-17T18:58:34.507 回答