Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在linq查询中使用最小值和最大值进行区分_Linq - Fatal编程技术网

在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。我已经更新了答案。