C# 选择要显示的列表
所以,我这里要检查的是园丁是否在这段时间内有空。如果该列表在此期间可用,请选择该列表。之后,检查海洋学家等等。接下来,它将检查最终结果是否包含任何列表。如果有一个或多个列表,则返回这些列表,否则返回false 对不起,我的解释不够清楚。我是编程新手。您不需要在每个if条件下进行选择,因为您不需要对投影选择进行任何操作。另外,在开始时声明最终变量,并将其添加到if块中C# 选择要显示的列表,c#,.net,C#,.net,所以,我这里要检查的是园丁是否在这段时间内有空。如果该列表在此期间可用,请选择该列表。之后,检查海洋学家等等。接下来,它将检查最终结果是否包含任何列表。如果有一个或多个列表,则返回这些列表,否则返回false 对不起,我的解释不够清楚。我是编程新手。您不需要在每个if条件下进行选择,因为您不需要对投影选择进行任何操作。另外,在开始时声明最终变量,并将其添加到if块中 if (gardenvlist.Count() == days) { var g = gardenvlist; } if
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();
试着这样做:
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));
}
您使用了3次相同的代码,所以我只是将测试是否匹配移动到一个新的函数ListMatches中,以使其更简单。然后,我创建了第二个函数,该函数只有在匹配时才会添加到该列表中
我不知道您使用的是什么类型,因为您使用了var,所以我猜它只是一个列表。如果不是这样,就用真实的类替换掉它,它应该仍然可以工作
这些局部函数只能在函数范围内使用和可见,这是非常有用的
我无法测试它,所以请告诉我它是如何工作的。在if块中声明这些变量有什么意义?一旦那个区块完成,它们就不复存在了。您应该阅读变量的作用域。变量go和c需要在if块之外声明,否则代码将无法编译。在使用它们创建final之前,您还需要检查它们是否都已初始化。为什么不使用var final gardenvlist.Unionoceanvlist.Unioncityvlist;?即使将g、o和c移出if块,它们也将是空值。@AustinWBryan,因为我试图检查这些列表是否符合if语句。我试图只选择与if语句匹配的。
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);