2015-07-02 3 views
0
public class MyObj 
{ 
    [Key] 
    public int id {get; set;} 
    public string test1 {get; set;} 
    public string test2 {get; set;} 
    public int test3 {get; set;} 
    public int test4 {get; set;} 
    public int test5 {get; set;} 
    public int? test6 {get; set;} 
    public DateTime? test7 {get; set;} 
    public string test8 {get; set;} 
    public string test9 {get; set;} 
    public string test10 {get; set;} 
    public string test11 {get; set;} 
    public string test12 {get; set;} 
    public DateTime? test13 {get; set;} 
    public DateTime? test14 {get; set;} 
    public DateTime? test15 {get; set;} 
    public string test16 {get; set;} 
    public string tes17 {get; set;} 
    public int test18 {get; set;} 
    public DateTime? test19 {get; set;} 
    public bool test20 {get; set;} 

    [ForeignKey("test3")] 
    public virtual Child1 child1 { get; set; } 
    [ForeignKey("test4")] 
    public virtual Child2 child2 { get; set; } 
    [ForeignKey("test5")] 
    public virtual Child3 child3 { get; set; } 
    [ForeignKey("test18")] 
    public virtual Child4 child4 { get; set; } 

    public virtual ICollection<Child1> child5 { get; set; } 
} 


var myobj = unitwork.myobjRepository.get(); 

Я просто хочу вывести идентификатор и проверить 1 на test20, без child1, child2, child3, child4 и child5.C#, entity framework, linq как исключить свойство

На данный момент, я,

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

, но я не думаю, что это правильный путь .. Пожалуйста, сообщите мне,

+1

Что заставляет вас думать, что это неправильно? –

+0

потому что, чтобы исключить 5, нужно выбрать каждый из 20 ...? –

+0

Невозможно «удалить» свойства из типа. Вы можете установить их значения равными нулю или по умолчанию, но вы не можете их удалить. –

ответ

2

Если имена свойств являются такими же, это может быть слегка проще:

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

Если вы просто проецируете объекты без преобразования, анонимный тип будет использовать те же имена свойств.

Если вы беспокоитесь о создании анонимного типа, то вы могли создать именованный тип, который имеет только свойства, необходимые и проект в , что, но нет ничего плохого в использовании анонимного типа того, что вы - сказал он.

0

По какой причине вы хотите это сделать? Если вы думаете о том, чтобы не перегружать сервер sql, вы должны проверить ленивую загрузку. child1, child2, child3, child4, child5 не будут загружены до тех пор, пока вы не получите доступ к этим свойствам, и у вас будет доступный класс MyObj (объект). Если вы делаете это, как и вы, вы получаете анонимный объект. Это может быть хорошо в некоторых сценариях, но не в другом. То, что также может быть решением, - создать другой класс без поля noecesery и сделать выбор в качестве экземпляра этого нового класса.

myobj.Select(x => new NewClass() { 
id = x.id, 
test1 = x.test1 
... 
... 
test20 = x.test20 
})); 
Смежные вопросы