IQueryable türü üzerinden, bir varlık alt kümesi alan ve bazı ölçütler üzerine bunları filtreleyen bir uzantı yöntemi oluşturdum. Benim sorunum, ilk başta hiç başlatılmadan değişkenlerden oluşan bir Birlik ifadesini döndüremem. Anonim olarak boş değerler geçerli değil.Bir Union ifadesi kullanmadan önce IQueryable değişkenlerini nasıl başlatmalıyım?
public static IQueryable<Person> FilterHairColors(this IQueryable<Person> subQuery, string[] hairColors)
{
IQueryable<Person> q1 = null;
IQueryable<Person> q2 = null;
IQueryable<Person> q3 = null;
IQueryable<Person> q4 = null;
foreach (var value in hairColors)
{
switch (value)
{
case "1":
q1 = subQuery.Where(p => p.HairColor_bright == true);
break;
case "2":
q2 = subQuery.Where(p => p.HairColor_brown == true);
break;
case "3":
q3 = subQuery.Where(p => p.HairColor_dark == true);
break;
case "4":
q4 = subQuery.Where(p => p.HairColor_red == true);
break;
}
}
return q1.AsQueryable().Union(q2.AsQueryable()).Union(q3.AsQueryable()).Union(q4.AsQueryable());
}
, sunulan kod bloğu birkaç tane daha parçasıdır ve her veri alt kümesini üreten bir sonraki filtreleme yöntemine bu şekilde iletti:
results = persons.FilterGender(vm.gender).FilterAge(vm.age).FilterHeight(vm.height)......
O zaman Birliği null olmayan değişkenlerle gerçekleştirmeyi nasıl koşullandırmalıyım? –
Bir teklif ekledim. – usr
Teşekkürler 'usr'. Sorunuma erişmek için daha basit, sezgisel bir yol düşünebilir misin? –