在 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