我在languageId
中刚刚创建的Select
引用时遇到了问题。我知道不能以这种方式完成,因为 m.
中的 m.languageId
不是我想要的。
var problem = await DataContext.ShopsProducts
.Select(m => new
{
languageId = m.Shop.LanguageId,
name = m.Product.LocalizedProductDetails.Select(
n => n.LanguageId == **m.languageId**);
我知道我可以将 m.languageId
替换为m.Shop.LanguageId
,但这在我的项目中相当长,并且Select
中有更多的引用。有没有办法,或者我应该在整个查询之前从Db中取出它?
答案 0 :(得分:0)
不,您无法在类型的初始值设定项中引用其他已创建的字段。做你想做的事的唯一方法是做一个中间投影,然后你在原始投影的顶部添加另一个图层:
var problem = await DataContext.ShopsProducts
.Select(m => new
{
languageId = m.Shop.LanguageId,
m = m
})
.Select(m => new
{
m.languageId,
name = m.m.Product.LocalizedProductDetails.Select(
n => n.LanguageId == m.languageId);
})
可能是" uglier"原来的。