循环通过Linq查询

时间:2014-04-24 14:27:32

标签: c# linq odata

我有一个linq查询从odata服务中提取数据,如下所示:

var Query = from t in results.People
   where t.Invalid == false && t.Id == 148
   select new
   {
    t.Name,
    t.Location
   }

我还有一个Ids的字符串数组{148,149,150 ...},我想用数组中的每个Ids替换上面的t.Id == 148表达式。

我不确定如何在没有for循环的情况下使用它的语法。 如果有可能,有人可以告诉我吗?

2 个答案:

答案 0 :(得分:3)

对于OData,您可以尝试:

var Query = from t in results.People
            from r in ids
            where t.Invalid == false && t.Id = r
            select new
            {
                t.Name,
                t.Location
            };

这将返回您的数组ids

中包含匹配ID的所有行

对于LINQ to对象或LINQ to SQL / Entity框架,查询通常是:

var Query = from t in results.People
   where t.Invalid == false && ids.Contains(t.Id)
   select new
   {
    t.Name,
    t.Location
   };

答案 1 :(得分:0)

如果OData不支持包含,那么Any?

from t in results.People
where t.Invalid == false && ids.Any(id => id == t.Id)
select new
{
    t.Name,
    t.Location
};