if (gardenvlist.Count() == days)
{
var g = gardenvlist;
}
if (oceanvlist.Count() == days)
{
var o = oceanvlist;
}
if (cityvlist.Count() == days)
{
var c = cityvlist;
}
var final = g.Union(o).Union(c);
if (final.Count() > 0)
{
return new ObjectResult(final);
}
return NotFound();
所以,我在这里得到的是我想检查一下这段时间内是否有花园名单。如果列表在期间可用,请选择列表。之后检查oceanvlist等。接下来,它将检查最终结果是否包含任何列表。如果有一个或多个列表,则返回这些列表,否则返回false。
很抱歉,如果我的解释不够明确。我是编程新手。
答案 0 :(得分:0)
在每个Select
条件下,您不需要if
,因为您不对投影(选择)执行任何操作。另外,在开头声明您的final
变量,并在if
块内添加它。
var rateGroupIds = new List<int>();
if (gardenvlist.Count() == days)
{
rateGroupIds.AddRange(gardenvlist.Select(x => RateGroupID));
}
if (oceanvlist.Count() == days)
{
rateGroupIds.AddRange(oceanvlist.Select(x => RateGroupID));
}
if (cityvlist.Count() == days)
{
rateGroupIds.AddRange(cityvlist.Select(x => RateGroupID));
}
答案 1 :(得分:0)
尝试这样的事情:
var final = new List<T>();
// Add all the lists only if they match
UnionIfMatches(gardenvlist);
UnionIfMatches(oceanvlist);
UnionIfMatches(cityvlist);
if (final.Count() > 0)
return new ObjectResult(final);
return NotFound();
// ---- Local Functions ---- //
// Adds the list to final if it matches
void UnionIfMatches(List<T> list)
{
if (ListMatches(list))
final.Union(list);
}
// Checks if the list matches
bool ListMatches(List<T list> => list.Select(x => xmethod.RateGroupID.Count() == days);
你使用了相同的代码3次,所以我只是将测试匹配到新函数ListMatches()
中以使其更容易。然后,我创建了第二个函数,只有匹配时才会添加到该列表中。
我不知道您使用的是哪种类型,因为您使用了var
,所以我只是猜测它是List<T>
。如果它不是,只需将它与真正的类交换,它应该仍然有效。
这些本地函数仅在函数范围内可用且可见,这非常有用。
我无法测试这个,所以让我知道这是如何工作的。