Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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
C# 选择要显示的列表_C#_.net - Fatal编程技术网

C# 选择要显示的列表

C# 选择要显示的列表,c#,.net,C#,.net,所以,我这里要检查的是园丁是否在这段时间内有空。如果该列表在此期间可用,请选择该列表。之后,检查海洋学家等等。接下来,它将检查最终结果是否包含任何列表。如果有一个或多个列表,则返回这些列表,否则返回false 对不起,我的解释不够清楚。我是编程新手。您不需要在每个if条件下进行选择,因为您不需要对投影选择进行任何操作。另外,在开始时声明最终变量,并将其添加到if块中 if (gardenvlist.Count() == days) { var g = gardenvlist; } if

所以,我这里要检查的是园丁是否在这段时间内有空。如果该列表在此期间可用,请选择该列表。之后,检查海洋学家等等。接下来,它将检查最终结果是否包含任何列表。如果有一个或多个列表,则返回这些列表,否则返回false

对不起,我的解释不够清楚。我是编程新手。

您不需要在每个if条件下进行选择,因为您不需要对投影选择进行任何操作。另外,在开始时声明最终变量,并将其添加到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);