2017-07-25 16 views
-2

従業員をIDとグループ2で検索する方法IDと日付が「2017-05-01」のMaxとMin時間LINQを使用した同じ行。 (ID = 1)LINQで従業員を探す方法

方法から

List<bllcls> obj = new List<bllcls>(); 
     obj.Add(new bllcls { id =1 , Date = Convert.ToDateTime("2017-05-01"),Time="08:00:00" }); 
     obj.Add(new bllcls { id =1 , Date = Convert.ToDateTime("2017-05-01"),Time="19:00:00" }); 
     obj.Add(new bllcls { id =2 , Date = Convert.ToDateTime("2017-05-01"),Time="08:00:00" }); 
     obj.Add(new bllcls { id =2 , Date = Convert.ToDateTime("2017-05-01"),Time="19:00:00" }); 

?私は

Row 1 = ID , DATE ,  MIN TIME , MAX TIME 
col = 1 , 2017-05-01, 08:00:00 , 19:00:00 

Row 2 = ID , DATE ,  MIN TIME , MAX TIME 
col = 2 ,2017-05-01, 08:00:00 , 19:00:00 
+0

は、あなたがこれまでに試したものを表示し、どこが問題 – Nkosi

答えて

1

GroupByこの形式で必要

はあなたの友達です:

var query = obj.GroupBy(x => x.id) 
    .Select(grp => new { Id = grp.Key, MinDate = grp.Min(x => x.Date), MaxDate = grp.Max(x => x.Date) }); 

あなたが唯一の指定Id使用Whereのためにそれをしたい場合:

var id1Query = query.Where(x => x.Id == 1); 

あなただけならば1つの使用を期待するFirstOrDefaultまたはSingleOrDefault

var id1 = query.FirstOrDefault(x => x.Id == 1); 
+0

感謝を有し、OBJ = obj.GroupBy(X一覧 にretunする方法ということを教えています=> x.id).Select(grp => new {Id = grp.Key、MinDate = grp.Min(x => x.Date)、MaxDate = grp.Max(x => x.Date)})。 ToList(); – hamza

+0

@hamza:あなたは新しい 'List 'をしたいですか? –

+0

はい新しいリストに保存したいリスト obj1; – hamza

0

のtryコード

Var result= (from p in obj 
       select new 
       { 
        Id=p.id, 
        Mindate=obj.where(c=>c.id==p.id).Min(c.date), 
        Maxdate= obj.where(c=>c.id==p.id).Max(c.date), 
       }).Distinct().ToList(); 
関連する問題