使用LINQ获取来自不同类的唯一列表

3

我有两个不同属性的类

ClassA
    int Id
    int Name
    int Status

ClassB
    int ClassAId
    string Bprop1
    string Bprop2
    string Bprop3
    ...

我有一个ClassA列表和一个ClassB列表,我想要获取一个唯一的ClassA值列表,条件是:

ClassA.Id在属性ClassAId上存在于List中

例如:

// given
List<ClassA>  {{1,"a"},{2,"b"},{3,"c"},{4,"d"}} etc
Lisst<ClassB>  {{1,"aaa","ccc","aasdaf"},{3,"aaa","ccc","aasdaf"}}

// expected result
List<ClassA>  {{1,"a"},{3,"c"}}  

我该如何使用LINQ查询来实现这个功能?

2个回答

3
这应该会给你期望的输出:-
List<ClassA> resultClassA = classAObj.Where(a => classBObj.Any(b => b.ClassAId == a.Id))
                                     .ToList();

2

以下是您需要的内容:

List<ClassA> objA;
List<ClassB> objB;

List<ClassA> result = objA.Where(x => objB.Select(y => y.ClassAId).Contains(x.Id));

别忘了用数据定义你的objAobjB

如果在objA中有重复的值,你只需要在最后使用.Distinct()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接