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

时间:2016-02-10 10:41:10

标签: c# linq

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

CREATE FUNCTION IsDuplicate(@col varchar(50))
RETURNS BIT
AS 
BEGIN
    IF CHARINDEX('KAT', @col) = 1 AND (SELECT COUNT(*) FROM [Catalog] WHERE [Cat_Catalog] = @col) > 1
        return 1;

    return 0;
END;
GO

ALTER TABLE [Catalog]
    ADD CONSTRAINT chkForDuplicates CHECK (dbo.IsDuplicate([Cat_Catalog]) = 0)
GO

我有ClassA列表和ClassB列表,我希望得到一个具有条件的ClassA值的唯一列表

  

列出ClassA.Id与属性ClassAId上的List一起出现的位置

示例:

ClassA
    int Id
    int Name
    int Status

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

如何为同一个应用LINQ查询?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

以下是您正在寻找的内容:

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

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

不要忘记用数据定义objAobjB

如果您在objA中有一个贬义价值,那么最后应该使用.Distinct()