繁体   English   中英

LINQ Where子句与包含列表具有复杂对象的位置

[英]LINQ Where clause with Contains where the list has complex object

我已经看到很多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其中RecordIdTableRecords等于AId在每个匿名类型匿名类型xzList

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

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

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

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

像这样的东西:

db.TableRecords.Select(c=>c.RecordId).Intercept(xzList.Select(n => n.AId)).Any()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM