9

我在一个简单的对象列表中看到了很多 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();

现在我想得到与上一个示例类似的结果,但列表现在有一个匿名类型,其中包含两个整数。那么,对于每个匿名类型,我现在如何获得resultinRecordId等于TableRecords匿名类型中的 in 的位置?AIdxzList

4

2 回答 2

11

听起来您不确定如何从匿名类型中获取值。您可以使用 GunnerL3510 的解决方案将其转储到列表中,或者您应该能够像这样内联它:

var result = 
    db.TableRecords
        .Where(c => xzList.Select(n => n.AId)
            .Contains(c.RecordId))
        .ToList();

由于您在匿名类型中命名值,因此您可以像引用属性一样引用它们。

如果您更喜欢采用更结构化的方法,则可以使用方法。

于 2012-12-27T22:21:11.847 回答
0

像这样的东西:

db.TableRecords.Select(c=>c.RecordId).Intercept(xzList.Select(n => n.AId)).Any()
于 2014-11-27T09:43:37.753 回答