在 table 中查找符合特定条件的最新记录
Finding the most recent record in a table matching a specific condition
我正在使用 C# 和 T-SQL。
我试图从匹配特定条件的 table 中获取最新记录的日期,但我卡在了匹配部分。目前我拥有的是:
date = (DateTime)(context.corresps.OrderByDescending(x => x.tevent).Select(x => x.tevent).FirstOrDefault());
我不知道如何添加到此声明中的是:
WHERE cmethod = 'W'
我可以将其重写为标准 LINQ 查询,但我正在努力提高自己。感谢您的帮助。
除非我遗漏了什么:
var date = context.corresps.OrderByDescending(x => x.tevent)
.Where(x => x.cMethod == "W")
.Select(x => x.tevent)
.FirstOrDefault());
我认为你误解了整个概念。
当你有
context.corresps.OrderByDescending(x => x.tevent).FirstOrDefault()
你得到一个 corresp
字段的最高值 tevent
您可以使用像这样的 where 子句向您的查询添加条件
context.corresps.Where(x => x.cmethod = 'W').OrderByDescending(x => x.tevent).FirstOrDefault()
最后你不能将你的 corresp
转换为 DateTime
除非你在 corresp
class 中实现了这个特性。所以你应该从对象本身得到你想要的日期时间。最终代码将是这样的
var lastCorresp = context.corresps.Where(x => x.cmethod = 'W').OrderByDescending(x => x.tevent).Select(x => x.tevent).FirstOrDefault();
var lastDate = lastCorresp.tevent; //or any other field that represents the date time you want, since you've ordered your query by tevent field I assume that this field holds the date time you want to use
我正在使用 C# 和 T-SQL。
我试图从匹配特定条件的 table 中获取最新记录的日期,但我卡在了匹配部分。目前我拥有的是:
date = (DateTime)(context.corresps.OrderByDescending(x => x.tevent).Select(x => x.tevent).FirstOrDefault());
我不知道如何添加到此声明中的是:
WHERE cmethod = 'W'
我可以将其重写为标准 LINQ 查询,但我正在努力提高自己。感谢您的帮助。
除非我遗漏了什么:
var date = context.corresps.OrderByDescending(x => x.tevent)
.Where(x => x.cMethod == "W")
.Select(x => x.tevent)
.FirstOrDefault());
我认为你误解了整个概念。
当你有
context.corresps.OrderByDescending(x => x.tevent).FirstOrDefault()
你得到一个 corresp
字段的最高值 tevent
您可以使用像这样的 where 子句向您的查询添加条件
context.corresps.Where(x => x.cmethod = 'W').OrderByDescending(x => x.tevent).FirstOrDefault()
最后你不能将你的 corresp
转换为 DateTime
除非你在 corresp
class 中实现了这个特性。所以你应该从对象本身得到你想要的日期时间。最终代码将是这样的
var lastCorresp = context.corresps.Where(x => x.cmethod = 'W').OrderByDescending(x => x.tevent).Select(x => x.tevent).FirstOrDefault();
var lastDate = lastCorresp.tevent; //or any other field that represents the date time you want, since you've ordered your query by tevent field I assume that this field holds the date time you want to use