使用 LINQ 从不同类获取唯一列表

本文关键字:获取 唯一 列表 同类 LINQ 使用 | 更新日期: 2023-09-27 18:33:57

我有 2 个具有不同属性的类

ClassA
    int Id
    int Name
    int Status
ClassB
    int ClassAId
    string Bprop1
    string Bprop2
    string Bprop3
    ...
我有 A 类列表

和 B 类列表,我想获得带有条件的 A 类值的唯一列表

列出存在 ClassA.Id 的位置,并在属性 ClassAId 上列出

例:

// 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 查询?

使用 LINQ 从不同类获取唯一列表

这应该给你预期的输出:-

List<ClassA> resultClassA = classAObj.Where(a => classBObj.Any(b => b.ClassAId == a.Id))
                                     .ToList();

以下是您要查找的内容:

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

不要忘记定义您的objA并使用数据进行objB

如果你在objA中有双重值,你应该在最后使用.Distinct()