У меня есть два спискабыстрый способ получить соответствующие элементы из списка два C#
List1 только две собственности. Cant use Dictionary, так как могут быть дубликаты ключей. Комбинация Property1 и Property2 уникальна.
public class List1
{
public string Property1 { get; internal set; }
public string Property2 { get; internal set; }
}
public class List2
{
public string Property1 { get; internal set; }
public string Property2 { get; internal set; }
public string Property3 { get; internal set; }
}
List<List1> mylist1 = new List<List1>() {
new List1() {Property1="664",Property2="Ford" },
new List1() {Property1="665",Property2="Ford" },
new List1() {Property1="664",Property2="Toyota" },
};
List<List2> mylist2 = new List<List2>() {
new List2() {Property1="664",Property2="Ford" ,Property3="USA"},
new List2() {Property1="665",Property2="Ford" ,Property3="USA"},
new List2() {Property1="664",Property2="Toyota" ,Property3="USA"},
new List2() {Property1="666",Property2="Toyota" ,Property3="USA"},
};
Мне нужно получить соответствующие элементы в mylist1 и mylist2. Матч должен происходить только на Property1 и Property2. Свойство3 в mylist2 можно игнорировать во время сравнения.
В настоящее время я использую
var matchingCodes = mylist1.Where(l1 => mylist2.Any(l2 => (l2.Property1 == l1.Property1 && l2.Property2==l1.Property2))).ToList();
, который работает прекрасно. Но есть ли лучший способ/самый быстрый способ сделать это?
Я могу изменить List1 на любой другой тип. но не List2.
Давайте формат последовательных абзацев – Paparazzi
LINQ редко наиболее perfomant варианта – Paparazzi