我有一个包含 1-3 个表的数据集,每个表都有一个名为 m_date(字符串)的列 我想使用 LINQ 从所有人那里获得最大值(value)。
我知道如何获取每个表的最大值:
var maxDate=ds.Tables[index].AsEnumerable()
.Max(x=>DateTime.Parse(x["m_date"].ToString())).ToString();
但我不知道如何从所有表信息中获取最大值
编辑:
我现在有这样的东西可以工作:
DateTime maxDate=DateTime.MinValue;
foreach (DataTable tbl in ds.Tables)
{
DateTime maxDateCur=ds.Tables[index].AsEnumerable()
.Max(x=>DateTime.Parse(x["m_date"].ToString()));
maxDate=new DateTime[] {maxDateCur,maxDate}.Max();
}
但我觉得它可以做得更好。
最佳答案
你可以这样做:
var maxDate = Enumerable.Range(0, ds.Tables.Count)
.SelectMany(index => ds.Tables[index].AsEnumerable())
.Max(dataRow => dataRow.Field<DateTime>("m_date"))
.ToString();
- 使用
Enumerable.Range
生成索引,使我们能够访问每个人DataTable
. - 使用
SelectMany
得到一个IEnumerable<DataRow>
- 使用
Max
获取最大值并将其转换为字符串。
略有不同的变体是:
var maxDate = Enumerable.Range(0, ds.Tables.Count)
.Select(index =>
ds.Tables[index].AsEnumerable()
.Max(dataRow => dataRow.Field<DateTime>("m_date")))
.Max().ToString();
- 使用
Enumerable.Range
生成索引,使我们能够访问每个人DataTable
. - 使用
Select
得到一个IEnumerable<DateTime>
由最大DateTime
组成每个DataTable
- 使用
Max
获取 DateTime 的最大值,然后转换为字符串表示形式。
关于c# - 从数据集中的 X 表中获取最大日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53942882/