2012-01-12 2 views
0

В настоящее время я запускаю некоторый код и получил некоторый вопрос об этом. Ниже перечислены списки двух запросов LINQ to Entites.где vs присоединяется. который лучше использовать

Код листинга:

IQueryable list = 
    from tableProject in db.Project 
    select new {StaffInCharge = (
     from tableStaff in db.Staff 
     where tableStaff.StaffId == tableProject.StaffInChargeId 
     select tableStaff.StaffName)}; 

Листинг B:

IQueryable list = 
    from tableProjectin db.Project 
    join tableStaff in db.Staff 
     on tableProject.StaffInChargeId 
     equal tableStaff.StaffId 
    select new {StaffInCharge = tableStaff.StaffName}; 

То, что я хочу, чтобы выяснить, является какой из них будет лучше и быстрее, если я должен выбрать много столбец из многих других Таблица.

Спасибо.

+4

Ваш код не будет компилироваться ни для одного из них в данный момент: 'select new StaffInCharge = ...' недействителен. Пожалуйста, обновите свой код соответствующим образом (в идеале, сохраняя его в хорошо отформатированном макете). –

+2

Смотрите мой собственный вопрос: http://stackoverflow.com/questions/5551264/why-is-linq-join-so-much-faster-than-linking-with-where –

+0

благодарит Стивена за макет. Но кто может научить меня, как сделать макет формата? Большое спасибо – 456qwe123asd

ответ

1

это комментарий от @ Тим Schmelter

«В статье (на самом деле мой SO-вопрос) относится к LINQ-To-DataSet, что на основе LINQ-To-объекты. Linq к SQL или Linq для Объекты могут быть оптимизированы СУБД таким образом, что предложение where имеет такую ​​же производительность, как и соединение ».

и ссылка Why is LINQ JOIN so much faster than linking with WHERE? я думаю, что это очень полезно.

Смежные вопросы