pro*_*mad 5 c# linq entity-framework
我搜索过StackOverflow但仍然无法理解使用单一,第一(或默认)查询的正确语法.
我愿意提出一个问题来首先捕获特定语言的翻译.如果数据库中没有这样的翻译,请用英语获取第一个.
这是我到目前为止所得到的:
locale = "ja-jp";
var items = from c in db.Contents.Include("Translation")
where c.RegionalInfo.Any(x => x.RegionId == locale)
select c;
Run Code Online (Sandbox Code Playgroud)
编辑 Obs:items是一个IEnumerable
根据您的解释,听起来您想要找到该值,如果没有找到则使用英文翻译。考虑以下:
locale = "ja-jp";
var itens = from c in db.Contents.Include("Translation")
where c.RegionalInfo.Any(x => x.RegionId == locale) ||
c.RegionalInfo.Any(x => x.RegionId == "en")
order by (c.RegionalInfo.RegionId == "en", "zzzz", c.RegionalInfo.RegionId)
select c;
var foundItem = items.FirstOrDefault();
if (foundItem != null)
{ ... }
Run Code Online (Sandbox Code Playgroud)
这会找到与您的区域设置和英语记录相匹配的记录,然后按 RegionId 对结果进行排序,将找到的英语项目放在列表末尾,然后获取第一个记录(如果找到)。注意:我没有测试此实现,因此请务必检查 orderby 参数以确保其按设计工作。
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |