我基本上有很多设计糟糕的代码来做一些事情,我敢肯定,可以做得更优雅。
我要做的是从数据库表中获取最后一个日期。
var Result =
from a in DB.Table
orderby a.Date descending
select new {Date = a};
foreach(var Row in Result)
{
LastDate = Row.Date.Date;
break;
}
基本上,有一个foreach循环只能运行一次。蹩脚的代码!什么是实现同样事情的“最佳实践”方式?
答案 0 :(得分:13)
var first = Result.First();
如果结果集为空,则会抛出异常;你可以使用FirstOrDefault(),如果结果集为空,它将返回null。
答案 1 :(得分:8)
致电First()
例如:
LastDate =
(from a in DB.Table
orderby a.Date descending
select a.Date
).First();
如果表格可能为空,请拨打FirstOrDefault()
,这将返回DateTime.MinValue
而不是抛出异常。
答案 2 :(得分:3)
var LastDate = DB.Table.OrderBy(a => a.Date).FirstOrDefault();
答案 3 :(得分:1)
FirstOrDefault()作为奖励,你可以使用LastOrDefault()......你猜对了......
[edit] - 哦,突然冲到那里用同样的答案:)
答案 4 :(得分:0)
您也可以致电Result.Take(1)
Take(1)
和First()
之间的区别在于First返回单个对象,Take返回类型的IEnumerable。
答案 5 :(得分:0)
如果Date是引用类型,那么您可以考虑合并运算符。
var LastDate = Result.FirstOrDefault()??新的日期();
答案 6 :(得分:0)
如果您正在尝试查找最新日期,可以使用“Max”功能(我相信linq2sql将转换为SQL MAX操作):
var maxdate = DB.Table.Max(a => a.Date)