[英]Refractoring a nested query in Linq to Entity Framework
假设我有这个查询:
var ps = from p in dc.Products
let text =
(from t in p.Text
orderby t.Language == "ja" descending
select t).FirstOrDefault()
select new { p.Id, text.Name };
有什么方法可以使查询分配给text
吗?
我的猜测是我需要使其成为Expression<Func<Product, string, ProductText>>
,但是我不知道如何调用它。
顺便说一句,如果有更有效的方法可以做到这一点,我很高兴知道。
谢谢,
丽
编辑:澄清一下,想法是,如果日语不可用,我希望它退回到其他可用语言上。
也许这更有效?
let text = p.Text.FirstOrDefault(t => t.Language == "ja") ?? p.Text.FirstOrDefault()
无论哪种方式,我的主要问题都是关于如何使text
查询可重用的-因为这很不直观,并且我可以想象自己或将来其他人做错了。
根据评论进行编辑
var ps = dc.Products.Select(p => new
{
Id = p.Id,
Text = p.Text.OrderBy(t=> t.Language == "ja").First()
})
.Select (x => new
{
Id = x.Id,
Name = x.Name,
...
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.