如何通过ID和第二组找到员工最大和最小时间在id = 1和Date =“2017-05-01”相同行使用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" });
from(id = 1)
怎么样?
我需要这种格式
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 :(得分: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);
如果您只希望使用FirstOrDefault
或SingleOrDefault
:
var id1 = query.FirstOrDefault(x => x.Id == 1);
答案 1 :(得分:0)
尝试代码
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();