Рассмотрим,Повторные данные из IEnumerable
public class Obj
{
public string PropertyName;
public string Name;
public int Id;
public int Value;
}
List<Obj> lsObjdata = new List<Obj>();
var obj = new Obj { Name = "xyz", PropertyName = "Volume", Id= 1, Value = 25};
lsObjdata.Add(obj);
obj = new Obj { Name = "abc", PropertyName = "Volume", Id= 1, Value = 23};
lsObjdata.Add(obj);
obj = new Obj {Name = "abc", PropertyName = "Oil", Id =1, Value = 45};
lsObjdata.Add(obj);
IEnumerable<IGrouping<String, obj>> results = lsObjData.GroupBy(m => m.Id);
Теперь моя results
будет иметь 3 значения для того же id.My Бизнес требует от меня, чтобы отдавать приоритет OBJ, имеющий xyz
как имя и опустить другой, если их свойства совпадают. Но, если xyz
не имеет свойства, которое abc
имеет? выберите значение этого свойства. Как и инициализация третьего объекта, указанного выше.
obj = new {Name = "abc", PropertyName = "Oil", Id =1, Value = 45}
Это свойство и значение не существует с именем, как xyz
. Это должно быть добавлено к моему окончательному результату. Мой результат должен содержать оба приведенных ниже объекта в списке.
obj = new {Name = "abc", PropertyName = "Oil", Id =1, Value = 45}
obj = new { Name = "xyz", PropertyName = "Volume", Id= 1, Value = 25};
PS: Я сделал с уже решения. Но я не смог использовать выражения Linq/Lambda и получить решение в одной строке/штрихе. Может ли кто-нибудь помочь мне на этом фронте? Спасибо, Sam
язык, на котором бы это компилировать? – stefankmitph
Вам нужно добавить 'GroupBy' на два свойства' ID' и 'PropertyName'. Это даст вам начало. –
@stefankmitph Это просто логика. Кто сказал, что он скомпилирует любого друга? – Kulkarni