Tôi đã tạo một phương thức tiện ích mở rộng trên loại IQueryable, có một nhóm nhỏ các thực thể và lọc chúng theo một số criterrions. Vấn đề của tôi là tôi không thể trả về một biểu thức Union làm bằng các biến, mà không phải tất cả đều được khởi tạo trước. Các giá trị rỗng, như là các giá trị, không hợp lệ.Tôi nên khởi tạo các biến IQueryable như thế nào trước khi sử dụng biểu thức Union?
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());
}
Các khối mã được trình bày là một phần của nhiều hơn, và mỗi tạo ra một tập hợp con của dữ liệu, chuyển tải đến một phương pháp lọc tiếp theo cách này:
results = persons.FilterGender(vm.gender).FilterAge(vm.age).FilterHeight(vm.height)......
Sau đó, làm cách nào để điều kiện Liên minh hoạt động với các biến không phải là rỗng? –
Tôi đã thêm một đề xuất. – usr
Cảm ơn 'usr'. Bạn có thể nghĩ cách đơn giản hơn, trực quan hơn để truy cập vào vấn đề của tôi không? –