Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除LINQ查询之间的重复一致性_Linq_C# 4.0 - Fatal编程技术网

删除LINQ查询之间的重复一致性

删除LINQ查询之间的重复一致性,linq,c#-4.0,Linq,C# 4.0,我需要多次调用相同的LINQ查询,这些查询在“where”子句中只有不同的元素。我不想一次又一次地重复LINQ查询,而是想将元素传递到一个查询中,但我的大脑在思考如何做 现在,我的基本LINQ查询如下所示: return from a in _repository.GetApps() join set in _repository.GetSettings() on a.id equals set.application_id

我需要多次调用相同的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方法吗?

可能,但我不确定这将如何工作。不过我会调查的。非常感谢。这看起来非常有希望。我试试看。非常感谢。