鉴于我有一组对象和一组key = value对,我将如何构造一个lambda(或者,如果lambda不合适,另一个表达式),以便它根据设置过滤原始集合。第二。
示例:一组任务并给出一个包含type = flight和location = USA的地图,返回在美国的所有飞行任务。
这个问题与另一个问题相关,但由于它们是不同的东西,我提出了两个问题。
假设我有类似的东西:
Dictionary<string, string> filters; //type and location are keys, flight and USA are the values, respectively
List<Mission> missions;
目前我们有类似的东西:
var badIds;
return missions.Where(x => !badIds.contains(x.ids)))
.Select(x => x.ids);
问题是,在这种情况下,我必须在编译时知道我想基于id进行过滤,并使用像集合这样的单维数组来完成它。我想使用两个维度,不仅包括我要查找的值,还包括要查看的参数,同时还根据参数的数量动态扩展过滤操作的数量。他们可以指定一个,另一个,两个,更多参数,更少,任何组合等(0参数可能是特殊情况,但这很容易)。
我想要类似的东西:
for ( KeyValuePair kvp in filters )
{
missions = missions.Where(x => x.(kvp.Key) == kvp.Value);
}
//I'm new to lambdas and C# so this is probably terrible.
答案 0 :(得分:0)
根据您的描述,这就是我想要收集的内容:
IEnumerable<Mission> FindMissions(IEnumerable<Mission> missions, string flight, string location)
{
var results = new List<Mission>();
foreach (Mission m in missions)
{
if (m.Type == flight && m.Location == location)
{
results.Add(m);
}
}
return results;
}
答案 1 :(得分:0)
我发布了自己的解决方案,因此可以判断。让我知道你们的想法。
SELECT * FROM `tb_users` ORDER BY RAND() LIMIT 1
我之前从未做过反思,所以性能影响未知。