选择刚刚添加的属性

时间:2018-03-01 14:15:46

标签: c# .net linq select core

我在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中取出它?

1 个答案:

答案 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"原来的。