Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
C# linq最大和最小日期_C#_Entity Framework - Fatal编程技术网

C# linq最大和最小日期

C# linq最大和最小日期,c#,entity-framework,C#,Entity Framework,将此SQL SP移植到linq语句时遇到一些问题。sql逻辑是基本的,获取最小和最大开始日期,如果它们相等,则使用MeetingDate的最小日期值。MeetingDate是一个字符串,因此我将在MM/dd/yyyy中使用它。如果它们不相等,则将最小起始日期和最大起始日期合并在一起 LINQ var Meeting = (from m in db.Meetings join md in db.MeetingDates on m.MeetingId equals md.Meetin

将此SQL SP移植到linq语句时遇到一些问题。sql逻辑是基本的,获取最小和最大开始日期,如果它们相等,则使用MeetingDate的最小日期值。MeetingDate是一个字符串,因此我将在MM/dd/yyyy中使用它。如果它们不相等,则将最小起始日期和最大起始日期合并在一起

LINQ
    var Meeting = (from m in db.Meetings
    join md in db.MeetingDates on m.MeetingId equals md.MeetingId
    join mf in db.MeetingFiles on m.MeetingId equals mf.MeetingId
    join fm in db.FileManagers on mf.FileManagerId equals fm.FileManagerId
    join vwGP in db.vwGuidelinePanels on m.GroupId equals vwGP.GroupId
    where mf.FileCategoryItemDictionaryId == 755
    select new Model.Meeting
    {
    MeetingId = m.MeetingId,
    GroupId = m.GroupId,
    MeetingDate =  max(md.StartDate) == min(md.StartDate)? min(md.StartDate)
    min(md.StartDate) + ' - ' + max(md.StartDate)
    }).ToList();


SQL
    case 
        when Convert(varchar(10),min(md.StartDate),101)=Convert(varchar(10),max(md.StartDate),101) 
        then Convert(varchar(10),min(md.StartDate),101) 
    else 
    Convert(varchar(10),min(md.StartDate),101)+' - '+Convert(varchar(10),max(md.StartDate),101) end
输出

04/15/2010
05/06/2010
05/12/2010
06/13/2010 - 06/16/2010
06/16/2010 - 06/19/2010
使用最大值和最小值时出现运行时错误

一个问题是
min(md.StartDate)
将是
DateTime
类型,而
min(md.StartDate)+'-'+max(md.StartDate)
的减法将是
TimeSpan
类型。如果你想知道输出的方式,那么转换成
字符串可能是最好的选择。下面是一个未经测试的粗略示例。我已经更新了我的答案,以使用正确的LINQ语法。然而,这一点也未经检验

MeetingDate = md.StartDate.Max() == md.StartDate.Min()? md.StartDate.Min().ToString("MM/dd/yyyy") : string.Format("{0: MM/dd/yyyy} - {1: MM/dd/yyyy}", md.StartDate.Min(), md.StartDate.Max());
一个问题是
min(md.StartDate)
将是
DateTime
类型,而
min(md.StartDate)+'-'+max(md.StartDate)
的减法将是
TimeSpan
类型。如果你想知道输出的方式,那么转换成
字符串可能是最好的选择。下面是一个未经测试的粗略示例。我已经更新了我的答案,以使用正确的LINQ语法。然而,这一点也未经检验

MeetingDate = md.StartDate.Max() == md.StartDate.Min()? md.StartDate.Min().ToString("MM/dd/yyyy") : string.Format("{0: MM/dd/yyyy} - {1: MM/dd/yyyy}", md.StartDate.Min(), md.StartDate.Max());

“将最小起始日期和最大起始日期加在一起”-这是什么意思?您希望结果是什么数据类型?看起来您可能正在尝试获取基于文本的结果,但min date值不是字符串…类似于2010年6月8日-2010年9月8日不确定您在这里试图实现什么,但我看到了一个问题
min(md.StartDate)
将是
DateTime
类型,而
min(md.StartDate)+'-'+max(md.StartDate)
的减法将是
TimeSpan
类型。我是否将min(md.StartDate)转换为stringRight?请在问题中澄清这一点。您不希望“使用MeetingDate的最小日期值”-您希望将最小日期值转换为字符串。您可能应该首先将该更改应用到LINQ中。。。以及告诉我们实际的问题是什么。(您已经向我们展示了一些LINQ,但没有描述它对您不起作用的方式。)“同时添加min StartDate和max StartDate”-这是什么意思?您希望结果是什么数据类型?看起来您可能正在尝试获取基于文本的结果,但min date值不是字符串…类似于2010年6月8日-2010年9月8日不确定您在这里试图实现什么,但我看到了一个问题
min(md.StartDate)
将是
DateTime
类型,而
min(md.StartDate)+'-'+max(md.StartDate)
的减法将是
TimeSpan
类型。我是否将min(md.StartDate)转换为stringRight?请在问题中澄清这一点。您不希望“使用MeetingDate的最小日期值”-您希望将最小日期值转换为字符串。您可能应该首先将该更改应用到LINQ中。。。以及告诉我们实际的问题是什么。(您已经向我们展示了一些LINQ,但没有描述它对您不起作用的方式。)谢谢您知道我为什么得到max/min不存在吗?简而言之,因为它不存在。在Linq中不是这样。事实上,我在Linq中找到了一篇可能有助于最小值和最大值的帖子,这样我就不会在“选择新模型”部分使用它。会议部分?谢谢你知道为什么我得到的最大值/最小值不存在吗?简而言之,因为它不存在。事实上,我在Linq中找到了一篇文章,这篇文章可能对Linq中的最小值和最大值有所帮助,这样我就不会把它放在“选择新型号”部分了?