我知道这个问题被问了很多次,我在网上搜索了大部分的解决方案,但是似乎没有一个适合我的。我有一个这样结构的表格:
ID | ScheduleId | Filename | Description
1 | 10 | | ....
2 | 10 | test.txt | .....
我希望通过传递ScheduleId(例如,在此情况下获取“test.txt”)来获取最后一个非空的文件名
。
我已经尝试了很多方法,但似乎没有得到文件名。以下是最后一个尝试:
var tempFileName = objContext.SchedulesAndFiles
.Where(x => x.ScheduleId == scheduleId)
.OrderByDescending(x => x.ScheduleId)
.Take(1).Select(x => x.Filename);
这种方法并不是很有效,尽管我知道它为什么无法实现:
var tempFileName = from e in objContext.SchedulesAndFiles
where e.ScheduleId == scheduleId
orderby e.ScheduleId descending
select e.Filename;
调用.Last()
或.LastOrDefault()
会抛出异常(The query operator 'LastOrDefault' is not supported.
)
OrderByDescending
对ScheduleId
进行排序。不应该使用ID
吗?另外,你在哪里筛选出空的FileName
记录? - Daniel KelleytempFileName.First
,因为你已经在使用descending
。 - Tim SchmelterScheduleId
排序,但是你的示例中包含了两条具有相同ScheduleId
的记录。所以显然你应该包括另一列作为排序依据,例如ID:... orderby e.ScheduleId descending, ID descending
。 - Tim Schmelter