Man*_*jit 5 c# linq entity-framework
我在一个表中有 3 个日期类型列,我只想使用 linq 从所有列中获取一个最小日期。
表:
收集 分阶段处理
1/20/2017 2/19/2017 3/17/2016
4/21/2017 6/18/2014 12/15/2015
需要的结果:6/18/2014
目前我正在使用以下代码:
var collectedDate = queryResults.Min(d => d.Collected);
var stagedDate = queryResults.Min(d => d.Staged);
var ProcessedDate = queryResults.Min(d => d.Processed);
Run Code Online (Sandbox Code Playgroud)
然后比较这三者并将最小日期存储在另一个变量中。我怎样才能以其他一些好的方式做到这一点?
您必须创建List使用collectedDate,stagedDate,ProcessedDate然后应用Linq它。请检查一下。
代码:
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public class Test
{
public DateTime Collected {get; set;}
public DateTime Staged {get; set;}
public DateTime Processed {get; set;}
}
public static void Main()
{
List<Test> queryResults = new List<Test>();
queryResults.Add(new Test(){Collected=Convert.ToDateTime("1/20/2017"),Staged=Convert.ToDateTime("2/19/2017"),Processed=Convert.ToDateTime("3/17/2016")});
queryResults.Add(new Test(){Collected=Convert.ToDateTime("4/21/2017"),Staged=Convert.ToDateTime("6/18/2014"),Processed=Convert.ToDateTime("12/15/2015")});
var collectedDate = queryResults.Min(d => d.Collected);
var stagedDate = queryResults.Min(d => d.Staged);
var ProcessedDate = queryResults.Min(d => d.Processed);
List<DateTime> listDate = new List<DateTime>(){collectedDate,stagedDate,ProcessedDate};
Console.WriteLine(listDate.Min(d => d));
//2nd Solution
//Compare DateTime between column and then rows to get min value
Console.WriteLine(queryResults.Min(d => getMin(getMin(d.Collected, d.Staged), d.Processed)));
}
//Function to compare two DateTime
public static DateTime getMin(DateTime a, DateTime b)
{
return a < b ? a : b;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在DotNetFiddle中检查代码的输出。