假设我有这个问题:
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
查询可重复使用 - 因为它相当不直观,我可以想象自己或其他人在将来做错了。
答案 0 :(得分:1)
根据评论进行编辑
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,
...
});