Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架从实体类中选择并排除字段_C#_Entity Framework - Fatal编程技术网

C# 实体框架从实体类中选择并排除字段

C# 实体框架从实体类中选择并排除字段,c#,entity-framework,C#,Entity Framework,在EF中,此查询为我提供了匿名类List。是否有其他方法将结果获取为List。或者有没有办法从父类和子类中排除select中的属性 db<Parent> .Select(o => new { o.ID, Childs = o.Childs.Select(t => new { t.ID }) }) .ToList() db .Select(o=>new{o.ID,Childs=o.Childs.Select(t=>new{t.ID})}) 托利斯先

在EF中,此查询为我提供了匿名类
List
。是否有其他方法将结果获取为
List
。或者有没有办法从父类和子类中排除
select
中的属性

db<Parent>
      .Select(o => new { o.ID, Childs = o.Childs.Select(t => new { t.ID }) })
      .ToList()
db
.Select(o=>new{o.ID,Childs=o.Childs.Select(t=>new{t.ID})})
托利斯先生()

是,将其投影到父对象而不是匿名对象中

db<Parent>
.Select(o =>
       new Parent{ o.ID,
                   Childs = o.Childs.Select(t => new { t.ID })
                 }
       ).ToList();
db
.选择(o=>
新父项{o.ID,
Childs=o.Childs.Select(t=>new{t.ID})
}
).ToList();
仔细想想:
如果您没有返回父类的所有属性,[意见警报],则应该将其投影到DTO中,因为这样您就必须管理/记住哪些字段正在加载,哪些字段没有加载。那是一场维护噩梦。[/opinion alert]

您没有指定需要此行为的环境,但这在MVC中很常见

如果您询问MVC,那么您可能需要将结果序列化为json

如果是这种情况,并为复杂的情况创建特定的选择,那么

(我知道——很多如果,我的答案可能不适用,但仍然:)

。。。看看实现

或者是否有方法从父类和子类中排除select中的属性


否,您不能选择/返回强类型实体框架对象,同时排除所述对象的属性。

但此时,如果父对象
具有无参数的ctor且不来自[protected]POCO库,则子对象到父对象中的引用将为
null
;;后续的
[意见]
,取决于规模(以及[OP]这样做的频率),像AutoMapper这样的东西可能值得一看。@Horizon,我想你对ORM的打击太大了。你想完成什么?这是一个很好的计划。在你描述为什么你认为你需要这个功能之前,我会投反对票。(那么我很可能会投赞成票。)@ErikPhilips的可能重复:有点不同意。问题是它返回的是匿名对象,而不是强类型对象。他真的需要去探究他想要那样做的原因吗?这不是一个黑白问答网站吗?@MikeCole它绝对不是黑白的。我建议你读一读什么是安。很多很多。。很多问题都在问为什么一个特定的正则表达式语句不起作用,而答案根本不需要正则表达式。