例如,如果我有一个IQ对象的Person对象,并且每个Person都有一个Age ID,我想创建另一个查询,从包含一个整数ID的表中选择所有行,该整数ID在这个IQueryable的ID中...... / p>
我可以使用这样的东西吗?
List<int> AgeList = new List<int>();
foreach(Person p in Persons)
{
AgeList.Add(p.Age);
}
var ageStats = from a in db.Ages
where AgeList.Contains(a.Age)
select a;
或者什么是更好的方式,所以我不需要循环?
由于
答案 0 :(得分:1)
听起来你想要进行连接。既然您提到Persons
是IQueryable
,它是否也来自数据库?
join
或SelectMany
(转换为LINQ to SQL中的连接)应该足够了。
<强>加入:强>
var ageStats = from a in db.Ages
join p in db.Persons on a.Age equals p.Age
select a;
<强>的SelectMany:强>
var ageStats = from a in db.Ages
from p in db.Persons
where a.Age == p.Age
select a;
答案 1 :(得分:0)
你可以做到
List<int> AgeList = Persons.Select(p => p.Age);
然而,即使msdn page for .Select没有说太多,我也很确定.Select
仍然是一个循环,所以你不会通过这样写它来获得任何性能
答案 2 :(得分:0)
var ageStats = from a in db.Ages
where Persons.Select(p => p.Age).Contains(a.Age)
select a;