Использование LINQ для объектов Intersect и Except для определенного свойства

Когда у меня есть 2 List объектов, я могу использовать Intersect и Кроме на них напрямую, чтобы получить вывод IEnumerable . Это достаточно просто, но что, если мне нужно пересечение / дизъюнкция для чего-то более сложного?

Пример, попытка получить коллекцию объектов ClassA , которая является результатом пересечения на ClassA объект AStr1 и ClassB объект BStr ; :

public class ClassA {
    public string AStr1 { get; set; }
    public string AStr2 { get; set; }
    public int AInt { get; set; }
}
public class ClassB {
    public string BStr { get; set; }
    public int BInt { get; set; }
}
public class Whatever {
    public void xyz(List<ClassA> aObj, List<ClassB> bObj) {
        // *** this line is horribly incorrect ***
        IEnumberable<ClassA> result =
            aObj.Intersect(bObj).Where(a, b => a.AStr1 == b.BStr);
    }
}

Как я могу исправить отмеченную линию, чтобы достичь этого пересечения.

6
задан Diana 22 October 2010 в 15:14
поделиться