我有两个主要对象,'属性'和' BayOptions'有'覆盖'领域。所以,
BayOption.Description(string),
BayOption.DescriptionOverride(bool)和
BayOption.DescriptionOverrideValue(string)
是如何设置所有字段的一个很好的例子。 (数据来自内部ERP / CRM系统,销售人员可以覆盖其中的值。)
我正在编写一个考虑了这些覆盖的搜索:(Also, see previous article)
List<Property> stringResults = db.Properties
.Where(
x => x.Address.Contains(searchString)
...
Works HERE--> || (x.DescriptionOverride ? x.DescriptionOverrideValue.Contains(searchString) : x.Description.Contains(searchString))
...
// bayoptions TODO: flesh these out more...
Need work here--> || x.BayOptions.Any(g => g.Description.Contains(searchString))
).ToList();
我现在担心的是如何从&#39; Works HERE&#39;以上到需要在这里工作&#39;以上。基本上,孩子对象。 我试过这样的事情,但我不确定它是否正常。从句法上来说它很好......无论如何,这会起作用吗?:
|| x.BayOptions.Any(g => g.DescriptionOverride ? g.DescriptionOverrideValue.Contains(searchString) : g.Description.Contains(searchString))
答案 0 :(得分:0)
如果我理解正确,你想检查是否有覆盖并搜索,否则搜索原始描述。这样的事情应该这样做:
List<Property> stringResults = db.Properties
.Where(
x => x.Address.Contains(searchString)
|| (x.DescriptionOverride && x.DescriptionOverrideValue.Contains(searchString))
|| x.BayOptions.Any(g => g.Description.Contains(searchString))
).ToList();