2017-01-12 1 views
0

リストからwhere句に基づいてグループ化リストを取得したいとします。私はどのようにそれを行うことができます。以下はその例です。リストオブジェクトをwhere句でグループ化して返す

public class OrderUpdate 
{ 

    public string Value { get; set; } 
    public int OrderType { get; set; } 
    public DateTime? StartDate { get; set; } 
    public DateTime? EndDate { get; set; } 

    public long OrderId { get; set; } 
    public string TrackingId { get; set; } 

    public OrderUpdate GetGroupedList() 
    {  
     var UpdateList = new List<OrderUpdate>(); 
     var groupedList = UpdateList.GroupBy(u => u.TrackingId); 
     // where OrderType in (1, 2, 3, 4) and add this in groupedlist 
     // which is objecct of OrderUpdate 
     return groupedList; 
    } 
} 
+0

groupedlistは、OrderUpdateまたはメソッドGetGroupedListのプロパティです。OrderUpdateのリストを返しますか? – Seminda

+0

uh ..(1,2,3,4)のOrderTypeが* groupedlist *に追加されているところで、* OrderTypeを持っている 'TrackingId'によって' OrderUpdate'をグループ化したいのですか? 、3,4、もしそうなら、最初にフィルタリングして( 'Where'を実行して)グループ化することができます。すなわち、 'int [] refOrderType = {1、2、3、4}; GroupBy(x => x.TrackingId); ' - あなたは要点を得ました、[reference](http://stackoverflow.com/questions/)UpdateList.Where(x => refOrderType.Contains(x.OrderType))。 21919695/c-sharp-linq-in-lambda-with-contains)である。 –

答えて

1

あなたの例はコンパイルされません。私はあなたがTrackIdでリストを注文し、いくつかの注文タイプをフィルターに入れたいと思っています。

public IEnumerable<OrderUpdate> GetList() 
{ 
    var validOrderTypes = new[] {1, 2, 3, 4}; 
    var UpdateList = new List<OrderUpdate>(); 
    // TODO: fill the list 

    return UpdateList 
    .Where(u => validOrderTypes.Contains(u.OrderType)) 
    .OrderBy(u => u.TrackId); 
}