Мне нужно отфильтровать значения результата, когда Group by
с ключом prop0, prop1
Я пытался добавить условия на select
при Group by
, но не работал с ошибкой следующим образом:
Cannot implicitly convert type 'bool' to 'int'
Cannot implicitly convert type 'bool' to 'string'
Это мой код
public class MyClass
{
public string prop0 { get; set; }
public int prop1 { get; set; }
public string prop2 { get; set; }
public int prop3 { get; set; }
}
static void Main(string[] args)
{
var list1 = new List<MyClass>();
list1.Add(new MyClass() { prop0 = "001", prop1 = 1, prop2 = "AAA", prop3 = 100 });
list1.Add(new MyClass() { prop0 = "001", prop1 = 2, prop2 = "BBB", prop3 = 200 });
list1.Add(new MyClass() { prop0 = "002", prop1 = 1, prop2 = "CCC", prop3 = 300 });
list1.Add(new MyClass() { prop0 = "002", prop1 = 1, prop2 = "XXX", prop3 = 400 });
list1.Add(new MyClass() { prop0 = "003", prop1 = 1, prop2 = "DDD", prop3 = 500 });
list1.Add(new MyClass() { prop0 = "004", prop1 = 1, prop2 = "XXX", prop3 = 600 });
list1.Add(new MyClass() { prop0 = "004", prop1 = 1, prop2 = "EEE", prop3 = 700 });
var tmpList = (from p in list1
group p by new
{
p.prop0,
p.prop1
} into data
select new MyClass()
{
prop0 = data.Key.prop0,
prop1 = data.Key.prop1,
prop2 = data.Select(p => p.prop2 == "XXX").First(),
prop3 = data.Select(p => p.prop2 == "XXX").First(),
}).ToArray();
Console.WriteLine();
}
Оригинальный список
{ prop0 = "001", prop1 = 1, prop2 = "AAA", prop3 = 100 },
{ prop0 = "001", prop1 = 2, prop2 = "BBB", prop3 = 200 },
{ prop0 = "002", prop1 = 1, prop2 = "CCC", prop3 = 300 },
{ prop0 = "002", prop1 = 1, prop2 = "XXX", prop3 = 400 },
{ prop0 = "003", prop1 = 1, prop2 = "DDD", prop3 = 500 },
{ prop0 = "004", prop1 = 1, prop2 = "XXX", prop3 = 600 },
{ prop0 = "004", prop1 = 1, prop2 = "EEE", prop3 = 700 }
=>
Результат, который я хочу
{ prop0 = "001", prop1 = 1, prop2 = "AAA", prop3 = 100 },
{ prop0 = "001", prop1 = 2, prop2 = "BBB", prop3 = 200 },
{ prop0 = "002", prop1 = 1, prop2 = "XXX", prop3 = 400 },
{ prop0 = "003", prop1 = 1, prop2 = "DDD", prop3 = 500 },
{ prop0 = "004", prop1 = 1, prop2 = "XXX", prop3 = 600 }