在linq查询中使用最小值和最大值进行区分
我有一张像下面这样的桌子在linq查询中使用最小值和最大值进行区分,linq,Linq,我有一张像下面这样的桌子 Name Entrytime Exittime A 10:30 AM 6:30PM A 7:30 AM 5:30PM B 10:30 AM 2:30PM A 5:30 AM 3:30PM B 11:30 AM 4:30PM A 8:30 AM 7:30PM C 9:30 AM 1:30PM C 10:30 AM 9:30PM Name E
Name Entrytime Exittime
A 10:30 AM 6:30PM
A 7:30 AM 5:30PM
B 10:30 AM 2:30PM
A 5:30 AM 3:30PM
B 11:30 AM 4:30PM
A 8:30 AM 7:30PM
C 9:30 AM 1:30PM
C 10:30 AM 9:30PM
Name Entrytime Exittime
A 5:30 AM 7:30PM
B 10:30 AM 4:30PM
C 9:30 AM 9:30PM
我需要使用linq查询获取每个名称的记录最小输入时间和每个名称的最大退出时间
所以我需要下面这样的结果集
Name Entrytime Exittime
A 10:30 AM 6:30PM
A 7:30 AM 5:30PM
B 10:30 AM 2:30PM
A 5:30 AM 3:30PM
B 11:30 AM 4:30PM
A 8:30 AM 7:30PM
C 9:30 AM 1:30PM
C 10:30 AM 9:30PM
Name Entrytime Exittime
A 5:30 AM 7:30PM
B 10:30 AM 4:30PM
C 9:30 AM 9:30PM
下面是一个LinqPad查询,显示了当Entrytime和Exittime是字符串而不是datetime时,如何在IEnumerable上执行此操作:
var list= new[]{
new {Name="A",Entrytime="10:30 AM",Exittime="6:30PM"},
new {Name="A",Entrytime="7:30 AM",Exittime="5:30PM"},
new {Name="B",Entrytime="10:30 AM",Exittime="2:30PM"},
new {Name="A",Entrytime="5:30 AM",Exittime="3:30PM"},
new {Name="B",Entrytime="11:30 AM",Exittime="4:30PM"},
new {Name="A",Entrytime="8:30 AM",Exittime="7:30PM"},
new {Name="C",Entrytime="9:30 AM",Exittime="1:30PM"},
new {Name="C",Entrytime="10:30 AM",Exittime="9:30PM"}};
var result=list.GroupBy(x=>x.Name)
.Select(x=>new {Name=x.Key,
Entrytime=x.Min(m=>DateTime.Parse(m.Entrytime)).ToString("h:mm tt"),
Exittime=x.Max(m=>DateTime.Parse(m.Exittime)).ToString("h:mm tt")});
result.Dump();
下面是一个LinqPad查询,显示了当Entrytime和Exittime是字符串而不是datetime时,如何在IEnumerable上执行此操作:
var list= new[]{
new {Name="A",Entrytime="10:30 AM",Exittime="6:30PM"},
new {Name="A",Entrytime="7:30 AM",Exittime="5:30PM"},
new {Name="B",Entrytime="10:30 AM",Exittime="2:30PM"},
new {Name="A",Entrytime="5:30 AM",Exittime="3:30PM"},
new {Name="B",Entrytime="11:30 AM",Exittime="4:30PM"},
new {Name="A",Entrytime="8:30 AM",Exittime="7:30PM"},
new {Name="C",Entrytime="9:30 AM",Exittime="1:30PM"},
new {Name="C",Entrytime="10:30 AM",Exittime="9:30PM"}};
var result=list.GroupBy(x=>x.Name)
.Select(x=>new {Name=x.Key,
Entrytime=x.Min(m=>DateTime.Parse(m.Entrytime)).ToString("h:mm tt"),
Exittime=x.Max(m=>DateTime.Parse(m.Exittime)).ToString("h:mm tt")});
result.Dump();
对不起,我不应该假设进出时间是日期时间。我已经更新了答案。对不起,我不应该假设Entrytime和Exittime是DateTime。我已经更新了答案。