在Linq查询中循环

本文关键字:循环 查询 Linq | 更新日期: 2023-09-27 17:59:47

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

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

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

我不确定它的语法如何,如果没有for循环也可能的话。如果可能的话,有人能告诉我吗?

在Linq查询中循环

对于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到对象或LINQ到SQL/实体框架,通常查询为:

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

如果OData不支持contains,那么Any呢?

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