c# - 当我们在 Linq 上使用 .Select(x=>new object) 时,为什么我们不能在多方面选择任何属性
问题描述
我只是想知道一些对我来说毫无意义的事情。我正在使用 ASP.NET Core 5.0,我正在使用 Linq。
我有两个有关系的班级One (MainCategory) - To - (Category) Many
。我想写一个 linq,它的目标是 getMainCategoryName
和CategoryID
. 让我向您展示我的 linq :
public IEnumerable<MainCategory> GetMainCategoryForFair()
{
return DBContext.MainCategories.Where(x => x.MainCategoryIsFeatured == true
&& x.IsDeleted != true)
.Select(x => new MainCategory
{
MainCategoryName = x.MainCategoryName,
Categories = x.Categories
}).ToList();
}
我知道,该查询将获取所有属性,Categories
这是我试图避免的事情。是否可以 ?
如果有可能,那怎么办?
如果不是,为什么?
解决方案
当然。只是不要投影所有属性。通常,如果您返回不同的数据形状,您会引入一个新类来返回,而不是返回具有一堆空属性的实体类型,例如
public IEnumerable<MainCategoryDTO> GetMainCategoryForFair()
{
return DBContext.MainCategories.Where(x => x.MainCategoryIsFeatured == true
&& x.IsDeleted != true)
.Select(x => new MainCategoryDTO()
{
MainCategoryName = x.MainCategoryName,
Categories = x.Categories.Select( c => new CategoryDTO(){CategoryName = c.Name, ...}).ToList()
}).ToList();
}
推荐阅读
- azure - 使用 Azure 函数导出 CSV
- python - 视图 shop.views.product_list 没有返回 HttpResponse 对象。它返回 None 而不是
- javascript - 从 onclick 函数传递值并使用 javascript 复制该值
- python - 结帐和订单表的数据库设计
- python - python中的INVALID文字没有被删除
- c++ - 为什么需要链接库?
- c# - 用于从字符串中选择数字模式的正则表达式
- enums - 在 Julia 中将枚举转换为符号
- javascript - message.member.roles 未填充
- kotlin - 我如何插入列表
- 到列表
- 在科特林
- 到列表