Есть такой код.
Для упрощения в классе 3 поля.
Суть в том что один запрос идет в foreach просто по разным полям.
Как можно схлопнуть это чтобы был один foreach?
using System.Linq.Expressions;
namespace helloworld
{
class hello
{
static void Main()
{
var p1 = new Person() { Age = 3, Name = "vova" };
var p2 = new Person() { Age = 3, Name = "vova2" };
var p3 = new Person() { Age = 32, Name = "vova2" };
var p4 = new Person() { Age = 33, Name = "vova2" };
var p14 = new Person() { Age = 323, Name = "vova24" };
var list = new List<Person>() { p1, p2, p3, p4, p14 };
foreach (var p in list
.GroupBy(a => a.Id)
.Where(x => x.Select(a => a.Age)
.Distinct()
.Count() > 1
)
.SelectMany(s => s.Select(o => o)))
{
//log error by Age
}
foreach (var p in list
.GroupBy(a => a.Id)
.Where(x => x.Select(a => a.Name)
.Distinct()
.Count() > 1
)
.SelectMany(s => s.Select(o => o)))
{
//log error by Name
}
}
class Person
{
public int Id;
public string Name { get; set; }
public int Age { get; set; }
}
}
}