Допустим, у меня есть две коллекции ExampleCollection1 и ExampleCollection2. Я хочу перебрать linq, сравнивая свойства 'ab' и 'gh' из обеих коллекций с разными значениями для xy и создать новый список. Я не беспокоюсь об изображении.
var ex1List = new List<ExampleCollection1>
{
new ExampleCollection1 {ab = "10", gh = "200" },
new ExampleCollection1 {ab = "10", gh = "300" },
new ExampleCollection1 {ab = "10", gh = "400" },
new ExampleCollection1 {ab = "10", gh = "500" },
new ExampleCollection1 {ab = "10", gh = "600" }
};
var ex2List = new List<ExampleCollection2>
{
new ExampleCollection2 {ab = "10", gh = "200", xy = "5", image = "star"},
new ExampleCollection2 {ab = "10", gh = "200", xy = "10", image = "moon"},
new ExampleCollection2 {ab = "10", gh = "400", xy = "4", image = "globe" },
new ExampleCollection2 {ab = "10", gh = "400", xy = "4", image = "earth" },//this should not be in the resulting collection as previous entry and this are same for ab, gh, and xy
new ExampleCollection2 {ab = "10", gh = "600", xy = "3", image = "twinkle" }
};
Итак, мне нужен окончательный список, содержащий
var finalList = new List<ExampleCollection2>
{
new ExampleCollection2 {ab = "10", gh = "200", xy = "5", image = "star"},
new ExampleCollection2 {ab = "10", gh = "200", xy = "10", image = "moon"},
new ExampleCollection2 {ab = "10", gh = "400", xy = "4", image = "globe" },
new ExampleCollection2 {ab = "10", gh = "600", xy = "3", image = "twinkle" }
};
Я пытался, но я знаю, что он неполный. Нужен способ, где я могу повторять и получать также различные значения для ху
foreach (var item in ex1List)
{
var finalList = ex2List?.FindAll(val => val.ab != null && val.gh != null &&
CheckEquals(item.ab, item.gh, val.ab, val.gh)); // here need to check for distinct values for xy too. how to do that ?
foreach(var x in finalList)
{
Console.WriteLine(x.ab + x.gh + x.xy + x.image);
}
}
private bool CheckEquals(<...>)
{
...
}