Değişken miktarda OR cümlesi içeren LINQ kullanarak bir SQL sorgusu oluşturmam gereken bir senaryo var. Bazı girdilere dayanarak sorguyu oluşturacak bir işlev yazıyorum. Fonksiyon tanımı Ben gerçek için kontrol edilmesi gereken sütunların bir koleksiyon verilen ediyorum, So ...LINQ ile birlikte, OR cümleleri nasıl zincirlenir?
function BuildQuery(ICollection<ColumnsThatNeedToBeTrue> columns)
{
...
}
benzer bir şey görünüyor ve çek OR
cümleleri kullanması gerekir. columns
dizi A
ve B
içeriyorsa
, ben sütun A
doğrudur YA kolon B
doğruysa kontrol etmek sorguyu gerekiyordu. columns
dizisi A
, B
ve C
içeriyorsa
, ben sorgulamak ve A
VEYA B
YA C
doğruysa kontrol etmek gerekiyordu.
Tek bir Where
içinde bunu nasıl yapacağımı bilmiyorum, çünkü ek olarak ||
ek maddelerine ek olarak ilerlemenin bir yolunu bilmiyorum. Giriş dizisine bağlı olarak, aşağıda nasıl ek OR kontrolleri ekleyeceğimi bilmiyorum. o AND
maddeleri kullanarak bu sorguyu oluşturur ve çünkü
var query = entities.Where(m => m.A == true || m.B == true ...)
Ben zincir Where
fonksiyonlar, kendi sütun kontrolü için her, ben OR
ihtiyacım olamaz.
böyle bir sorgu dışarı inşa etmenin bir yolu LINQ kullanarak, var mı?
'Alanı'nda hükmü? http://stackoverflow.com/questions/959752/where-in-clause-in-linq –
Belki 'UNION' size yardımcı olur mu? –
Çalıştığını sanmıyorum çünkü SQL'de bu şeyler tek tek sütunlardır. EF varlık sınıfımda, bu sütunlar her sütun için "bool" özellikleri olarak temsil edilir. Benim işlevimin bir girdisi olarak, doğrulamak için hangi sütunun kontrol edileceğini söyleyen bir dizi "enum" verilir. Yani karşılaştırmak için gerçek bir dizi yok - sadece bireysel bool sütunları/özellikleri. – Ryan