Просто хотел проверить, есть ли способ сделать разные столбцы. Спасибо заранее.
BTW, я нашел отличное расширение LINQ here, но для его использования нужно несколько советов по использованию нескольких столбцов.
Просто хотел проверить, есть ли способ сделать разные столбцы. Спасибо заранее.
BTW, я нашел отличное расширение LINQ here, но для его использования нужно несколько советов по использованию нескольких столбцов.
Ну, сначала вы можете сделать проецирование:
var qry = db.Customers.Select(cust => new {cust.ID, cust.Name, cust.Region})
.Distinct();
Или в синтаксисе запроса:
var qry = (from cust in db.Customers
select new {cust.ID, cust.Name, cust.Region}).Distinct();
Что делать?
Вместо Distinct вы можете использовать Groupby, а затем выбрать самую большую запись из каждой группы
Как LINQ выделяется несколькими полями без анонимных типов
возврат из o в objEntity
group o by new { o.Field1, o.Field2, o.Field3, o.Field4, o.Field5 } into grp select grp.FirstOrDefault();
Это даст вам EntityObject вместо AnonymousType
В разделе "Различают несколько столбцов", что вы действительно имеете в виду, это группа.
Когда вы запрашиваете разницу, это означает, что вы получаете ВСЕ отдельные строки или группу, используя все столбцы в таблице.
Если вы хотите получить только отдельные группы для подмножества столбцов, используйте группу в своем предложении, указав столбцы для группировки. Затем выберите группы, так как вам нужен только один набор ключей для каждой группы.
Еще один простой способ - создать отдельную строку.
var result = collection.DistinctBy(c => c.Field1 + "." + c.Field2 + "." + c.Field3);
var qry = (от cust в db.Customers выберите новый {cust.ID, cust.Name, cust.Region}). GroupBy (x = > new {x.Name, x.Region}). select (z = > z.OrderBy(i = > i.cust)..FirstOrDefault()) ToList();