"and"演算と一致する必要があるフィルタを持つ配列のセットがあります。LINQ条件式と
List<string> cars = new List<string>();
List<string> flights = new List<string>();
flights.Add("Boing");
flights.Add("Airbus");
var transports = new List<Transport>();
var t1 = new Transport("Ford", "Boing");
var t2 = new Transport("BMW", "Boing");
var t3 = new Transport("BMW", "Flights INC");
transports.Add(t1);
transports.Add(t2);
transports.Add(t3);
//returns 0 result. In this scenario I would expect to get all with boing and Airbus and cars excluded from search because its empty
var result = transports.Where(p =>
(cars.Count>0 && cars.Contains(p.CarType)) &&
(flights.Count > 0 && flights.Contains(p.FlightType))).ToList();
cars = new List<string>();
flights = new List<string>();
cars.Add("BMW");
flights.Add("Boing");
IEnumerable<Transport> result2 = transports;
if (cars?.Any() == true)
{
result2 = transports.Where(p => cars.Contains(p.CarType));
}
if (flights?.Any() == true)
{
result2 = transports.Where(p => flights.Contains(p.FlightType));
}
// all rows returned here I only want t2
var r = result2.ToList();
ラーフルは正しい方向に導かれたこと:私は、フィルタアレイは、このフィルタのためにすべてを含めるよう、それがinterpreetedしなければならない空です。配列をnullにすることはできません。それを解決:
statusViewResult = statusViewResult.Where(p=>
(query.ClustersSelected.Count == 0 || query.ClustersSelected.Contains(p.Cluster)) &&
(query.ParkNamesSelected.Count == 0 || query.ParkNamesSelected.Contains(p.ParkName)));
です。{プロパティ名}は、いくつかの価値がありますか? right – Ajay2707
配列に値が含まれていない場合、Containsはfalseになります。あなたが望むものではありませんか? –
このようなことがありますが、statusViewResult = statusViewResult.Where(p => (query.ClustersSelected!= null && query.ClustersSelected.Contains(p.Cluster))&& (query.ParkNamesSelected!= null && query.ParkNamesSelected。 Contains(p.ParkName))); –