2015-01-08 2 views
1

Я не очень хорошо знаком с LinQ, и у меня небольшая проблема (я думаю). В основном я»десериализацию файла XML в массив следующих элементов:Как достичь groupby в LINQ

public string stringId{ get; set; } 
public string sgent { get; set; } 
public string status{ get; set; } 
public string recallDate { get; set; } 
public string product{ get; set; } 
public string sendMethod{ get; set; } 
public string campaign{ get; set; } 
public string comment{ get; set; } 
public string sgentId{ get; set; } 
public string dateOfSell { get; set; } 

Мой список до сих пор выглядит как этот

var model = from r in selling.sales 
      where r.sgentId == idFromLoginAction.ToString() 
      orderby r.dateOfSell 
      select r; 

Это работает, но что я хочу добиться того, чтобы получить список этих пунктов groupped по свойству dateOfSell, поэтому позже я могу показать это в представлении таким образом, что свойство Date будет отображаться только один раз для каждой даты и ниже этой даты. Я хочу показать список всех других свойств, в которых свойство dateOfSell являлось этой особой датой ,

Я уверен, что смогу достичь этой группировки с помощью LinQ. Я прав ? Возможно ли это, или это плохой подход? пыльник я уже написал небольшой эскиз, чтобы показать, что моя точка:

2014-01-08 
Prop 1 Prop2 Prop3 prop4 ... etc 
Prop 1 Prop2 Prop3 Prop4 ... etc 
2014-01-07 
Prop 1 Prop2 Prop3 prop4 ... etc 
Prop 1 Prop2 Prop3 Prop4 ... etc 
ETC ... 
+1

возможно дубликат [Группы в LINQ] (http://stackoverflow.com/questions/7325278/group-by-in-linq) – devqon

+0

Собирается проверить его – MajkeloDev

ответ

1

использование GroupBy таким образом, сделать, как это раньше Select:

var model = from r in selling.sales 
      where r.sgentId == idFromLoginAction.ToString() 
      orderby r.dateOfSell 
      group r by r.dateOfSell into g 
      select new { DateOfSell = g.Key, Sales = g.ToList() }; 
+0

Извините за не хорошо форматирование я м на мобильном –

+0

Спасибо @Magnus за редактирование –

+0

Я знал, что это возможно. Он работает нормально. Спасибо :) – MajkeloDev

0
var result = selling.sales.GroupBy(s => s.dateOfSell, (key, g) => new { SellDate = key, OtherValues = g.ToList() }); 

Тогда вы можете сделать:

 foreach(var item in result){ 
// Your key you grouped By 
    var selDate = item.SellDate; 

// List of Other Items 
    var groupedItems = item.OtherValues; 


     } 

Посмотрите на ссылку, упомянутую @Devqon: Group by in LINQ