Nói rằng tôi có như sau:Hãy so sánh hai danh sách Via Một tài sản dùng LINQ
class Widget1{
public int TypeID { get; set; }
public string Color { get; set; }
}
class Widget2
{
public int TypeID { get; set; }
public string Brand { get; set; }
}
private void test()
{
List<Widget1> widgets1 = new List<Widget1>();
List<Widget2> widgets2 = new List<Widget2>();
List<Widget1> widgets1_in_widgets2 = new List<Widget1>();
//some code here to populate widgets1 and widgets2
foreach (Widget1 w1 in widgets1)
{
foreach (Widget2 w2 in widgets2)
{
if (w1.TypeID == w2.TypeID)
{
widgets1_in_widgets2.Add(w1);
}
}
}
}
Tôi đang sử dụng hai foreach vòng lặp để so sánh danh mục do typeid để cư một danh sách thứ ba. Có cách nào khác sử dụng LINQ để so sánh hai danh sách này thông qua TypeID không? Có lẽ sử dụng Interstect hoặc một số chức năng khác?
1 _ "Với trường hợp của bạn, Intersect không phải là một lựa chọn" _ Nó sẽ là một lựa chọn khi một tùy chỉnh 'IEqualityComparer' sẽ có thể, một loại cơ sở chung. Sau đó, bạn có thể truyền cho [quá tải] này (http://msdn.microsoft.com/en-us/library/bb355408.aspx) hoặc ghi đè 'Equals' +' GetHashCode' trong 'BaseWidget' để so sánh bằng' TypeID 'theo mặc định. –