C、 实体框架,linq如何排除属性

C、 实体框架,linq如何排除属性,linq,asp.net-mvc-3,Linq,Asp.net Mvc 3,但我不认为这是正确的方式。。请告知我,如果属性名称相同,可能会稍微简单一些: 如果只是投影没有转换的属性,匿名类型将使用相同的属性名称 如果您关心创建一个匿名类型,那么您可以创建一个只具有所需属性的命名类型,并将其投影到该类型,但是使用所显示的匿名类型没有什么错。您希望这样做的原因是什么?如果您考虑的是不要使sql server过载,那么应该检查延迟加载。在您访问这些属性之前,不会加载child1、child2、child3、child4、child5,并且您将拥有可用的MyObj类对象。 如果

但我不认为这是正确的方式。。请告知我,

如果属性名称相同,可能会稍微简单一些:

如果只是投影没有转换的属性,匿名类型将使用相同的属性名称


如果您关心创建一个匿名类型,那么您可以创建一个只具有所需属性的命名类型,并将其投影到该类型,但是使用所显示的匿名类型没有什么错。

您希望这样做的原因是什么?如果您考虑的是不要使sql server过载,那么应该检查延迟加载。在您访问这些属性之前,不会加载child1、child2、child3、child4、child5,并且您将拥有可用的MyObj类对象。 如果你像以前那样做,你最终会得到一个巨大的物体。在某些情况下可能是可以的,但在其他情况下则不行。 另一种解决方案可能是创建另一个没有不必要字段的类,并将select设置为该新类的实例

myobj.Select(x => new {
    x.id,
    x.test1
    ...
    ...
    x.test20
})); 

什么让你认为它错了?因为,要排除5个,需要选择20个中的每一个…?没有办法从类型中删除属性。您可以将它们的值设置为null或默认值,但不能删除它们。
myobj.Select(x => new {
    id = x.id,
    test1 = x.test1
    ...
    ...
    test20 = x.test20
})); 
myobj.Select(x => new {
    x.id,
    x.test1
    ...
    ...
    x.test20
})); 
myobj.Select(x => new NewClass() {
id = x.id,
test1 = x.test1
...
...
test20 = x.test20
}));