我有一张桌子' 物业'它有位置, Property_Type 以及许多其他字段。
我的输入有一个位置列表,每个位置都有另一个过滤条件列表。例如: - 我的位置是 - [A,B& C]。对于这些地点中的每一个,还有另一个列表,即 - [公寓,土地,房屋等]。
示例输入数据:
A - [公寓,土地,房屋] --->表示 - 具有3个过滤选项的位置A
B - [土地,房屋]
C - [公寓,土地]
我需要找到位置A的所有属性,包括property_type [Apartment,Land,House],在位置B找到property_type [Land,House]等
我像这样制作了字典对象;
Dictionary<string,List<PropertyType>> PTypeDictionary =new Dictionary<string,List<PropertyType>>();
注意:PropertyType为枚举
现在我的输入数据在此词典中 - 键是位置,值是Property_Types的列表。
如何编写LINQ查询以查找这些位置中的所有属性以及过滤property_type?
答案 0 :(得分:1)
您可以构建自定义表达式,或者只是将所有这些表达式合并为单个结果。
下面的代码示例是如何使用Union
执行任务的示例。在LINQPad中测试过,它也应该在Entity Framework中工作。
var PTypeDictionary = new Dictionary<string, IList<PropertyType>>
{
["A"] = new List<PropertyType> { PropertyType.Apartment, PropertyType.Land, PropertyType.House},
["B"] = new List<PropertyType> { PropertyType.Land, PropertyType.House},
["C"] = new List<PropertyType> { PropertyType.Apartment, PropertyType.Land}
};
var empty = Properties.Where(x => 1==2);
var props = PTypeDictionary.Aggregate(empty, (a, f) => a.Union(Properties.Where(p => p.Location == f.Key && f.Value.Contains(p.Type))));
var pList = props.ToList();