我已经看到很多LINQ示例,其中包含一个简单的对象列表:
var intList= new List<int>() { 1, 2, 3 };
var result = db.TableRecords.Where(c => intList.Contains(c.RecordId)).ToList();
我想要做的事情似乎稍微复杂一点(我认为)。我有一行代码类似于我需要的列表:
var xzList = db.Relations.Where(r => someOtherList.Contains(r.zId))
.Select(r => new { AId = r.xId, BId = r.zId })
.ToList();
现在我想得到与上一个示例类似的结果,但是列表现在有一个带有两个整数的匿名类型。那么,我现在如何result
RecordId
中TableRecords
AId
与xzList
中每个匿名类型的{{1}}等于{{1}}?
答案 0 :(得分:11)
听起来您不确定如何从匿名类型中获取值。您可以使用GunnerL3510的解决方案将其转储到列表中,或者您应该能够像这样内联它:
var result =
db.TableRecords
.Where(c => xzList.Select(n => n.AId)
.Contains(c.RecordId))
.ToList();
由于您在匿名类型中命名值,因此您可以像属性一样引用它们。
如果您希望采用更结构化的方法,可以使用this方法。
答案 1 :(得分:0)
这样的事情:
db.TableRecords.Select(c=>c.RecordId).Intercept(xzList.Select(n => n.AId)).Any()