如何解决消除LINQ查询之间的重复需求
| 我需要多次调用相同的LINQ查询,这些查询在\“ where \”子句中只有不同的元素。我不想一遍又一遍地重复LINQ查询,而是想将元素传递到单个查询中,但是我很想知道如何做到这一点。 现在,我的基本LINQ查询如下所示:return from a in _repository.GetApps()
join set in _repository.GetSettings() on a.id equals set.application_id
join type in _repository.GetSettingsTypes() on set.setting_type_id equals type.id
join ent in _repository.GetEntities() on a.entity_id equals ent.id
where ent.ROW_ID == app && set.application_id == id && (set.setting_type_id==81 || set.setting_type_id==82 || set.setting_type_id==83)
orderby set.application_id,type.ordinal
select new Settings { app_name = a.name,data_type = type.data_type,setting_name = type.name,setting_description = type.description,setting_value = set.setting_value,entity_name = ent.name,entity_num = ent.ROW_ID };
\“ where \”子句仅按ID列出设置类型。其他调用将简单地用更多或更少的设置ID替换该\“ where \”子句,然后将其返回到视图。如何动态替换该\“ where \”子句或设置ID?我可以简单地将一个字符串或数组分配给第二个\“ && \”之后的设置列表(这似乎不起作用)吗?还是Lambdas可以在这里提供帮助(我也无法正常工作)?谢谢!
解决方法
您可以将数组与
Contains()
查询结合使用:
var settingTypeIds = new[] { 81,82,83 };
return from a in _repository.GetApps()
..
where ent.ROW_ID == app
&& set.application_id == id
&& settingTypeIds.Contains(set.setting_type_id)
,您必须使用查询语法吗?您可以使用LINQ扩展方法并将不同的lambda表达式传递到Where方法中吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。