Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有的LINQ Where子句包含列表具有复杂对象的位置_C#_Linq - Fatal编程技术网

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

C# 具有的LINQ Where子句包含列表具有复杂对象的位置,c#,linq,C#,Linq,我已经看到了很多在简单对象列表中包含的LINQ示例: var intList= new List<int>() { 1, 2, 3 }; var result = db.TableRecords.Where(c => intList.Contains(c.RecordId)).ToList(); 现在我想得到与前一个示例类似的结果,但是列表中现在有一个匿名类型,其中有两个int。那么我现在如何获得result,其中TableRecords中的RecordId等于xzList中

我已经看到了很多在简单对象列表中包含的LINQ示例:

var intList= new List<int>() { 1, 2, 3 };
var result = db.TableRecords.Where(c => intList.Contains(c.RecordId)).ToList();

现在我想得到与前一个示例类似的结果,但是列表中现在有一个匿名类型,其中有两个int。那么我现在如何获得
result
,其中
TableRecords
中的
RecordId
等于
xzList
中每个匿名类型的
AId

听起来您不确定如何从匿名类型中获取值。您可以使用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()
因为您是在匿名类型中命名值,所以引用它们就像引用属性一样

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

类似这样的方法:

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()

var intList=xzList.Select(listObject=>listObject.AId).ToList();我正要写
c=>xzList.Any(n=>n.AId==c.RecordId)
,但大致相同。如果您想先将所有的代码> Audio<代码>转储到一个单独的集合(可能更快,“GunNel3510的解决方案”),考虑使用<代码> HasStuts<代码>,例如:<代码>新的HASSET(XZList.SELECT(n=> N.AID))< /C> >,所以看起来我需要将列表中的内容用ANON对象转储到仅int的列表中,然后执行新列表中的包含操作。我想我在想还有其他方法可以引用列表。Contains(),但它开始不是那样了。@SailingJudo不,这不是唯一的可能性。如果您愿意,您可以使用我第一条评论的lambda箭头。@SailingJudo:如果
db
对象是某种SQL
DataContext
,您不想在
xzlist
上调用
.ToList()
,除非您有尚未说明的理由这样做。如果您这样做了,您将进行两个相对昂贵的db调用,而不是一个。