nerede

2016-04-06 28 views
0

şu anda iki Yalnızca bir kez çalıştırmak isteyen aynı kompleks sorgu paylaşan querys, olması durumunda, her nesne için fıkra:nerede

//Query 1 
from together in (...) // ... = Complex query with multiple joins 
where together.property == 0 
select new { ... } 

//Query 2 
from together in (...) // ... = Complex query with multiple joins 
where together.property > 0 
select new { ... } 

problem, Farklı bir cümleleri var. Ben select deyiminde nerede maddesini ayarlamak çalıştı, ancak bu sadece ben burada ihtiyacım yok ki groupby kullanırsanız, mümkün görünmektedir:

//Don't work 
from together in (...) // ... = Complex query with multiple joins 
select new { 
    //if together would be grouped, this would work. However I need all data without grouping 
    //   . Together is not IQueryable so this does not work 
    Foo = together.Where(e => e.property == 0).Select(...), 
    Bar = together.Where(e => e.property > 0).Select(...) 
} 

mi mümkün Farklı dayalı 2 nesneleri almak için LINQ ile bir sorgudaki cümlede nerede?

+0

gibi onları bölmek? –

+0

'birlikte'' 'select new''de' IQuerabil'' değil @SamIam –

+0

Query1/2 de aynı seçer mi? –

cevap

1
Hepsini sorgulamak olabilir

ve daha sonra bir `DoesNotWorkException` atma mı bu

var qry= (
    from together in (...) // ... = Complex query with multiple joins 
    where together.property => 0 
    select together) 
    .ToList(); 

var result = new { 
    Foo = qry.Where(e => e.property == 0).Select(...), 
    Bar = qry.Where(e => e.property > 0).Select(...) 
}; 
+0

Bu bir çözüm olurdu, teşekkür ederim. Ama ben büyük bir veri seti ile uğraşıyorum. Bunun sadece çevrilmiş SQL ile mümkün olacağını düşünüyor musunuz? –

+0

@ChristianGollhardt Oluşturduktan sonra bu sorgunun sonucuyla ne yapacaksınız? Eğer her şeyi bir seferde sorgulayabilecek olursanız, bu yaklaşım, performanstan etkilenebilecek küçük bir alt kümeyi seçerse, –

+0

@ChristianGollhardt için herhangi bir yeni performans kaygısı getirmemelidir. Mülk kontrol etmeden önce seçmek mümkün mü? –