Apo*_*fix 2 c# linq linq-query-syntax
我知道这被问了很多次,我在网上搜索了大部分解决方案,但似乎没有任何东西可以帮我.我有一个这种结构的表:
ID | ScheduleId | Filename | Description
1 | 10 | | ....
2 | 10 | test.txt | .....
Run Code Online (Sandbox Code Playgroud)
我希望Filename通过传递ScheduleId 来获取最后一个非空(例如,在这种情况下获取"test.txt").
我尝试了很多东西,似乎没有任何东西让我得到文件名.这是最后一个:
var tempFileName = objContext.SchedulesAndFiles
.Where(x => x.ScheduleId == scheduleId)
.OrderByDescending(x => x.ScheduleId)
.Take(1).Select(x => x.Filename);
Run Code Online (Sandbox Code Playgroud)
这不起作用,虽然我明白为什么它不:
var tempFileName = from e in objContext.SchedulesAndFiles
where e.ScheduleId == scheduleId
orderby e.ScheduleId descending
select e.Filename;
Run Code Online (Sandbox Code Playgroud)
调用.Last()或.LastOrDefault()抛出异常(The query operator 'LastOrDefault' is not supported.)
如果必须包含您只想要非空文件名.您也可以使用ToList()最终确定查询,然后FirstOrDefault()按预期工作,尝试
var tempFileName = objContext.SchedulesAndFiles
.Where(x
=> x.ScheduleId == scheduleId
&& x.Filename != null
&& x.Filename != "")
.OrderByDescending(x => x.ScheduleId)
.Take(1)
.Select(x => x.Filename)
.ToList()
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
您应该根据ID而不是ScheduleId过滤记录,并过滤具有空的记录Filename:
objContext.SchedulesAndFiles
.Where(x => x.ScheduleId == scheduleId && x.Filename != "")
.OrderByDescending(x => x.ID)
.First().Filename;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18460 次 |
| 最近记录: |