我有一个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循环的情况下使用它的语法。 如果有可能,有人可以告诉我吗?
答案 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
对于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
};