选择要显示的列表

时间:2018-05-17 02:37:30

标签: c# .net

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。

很抱歉,如果我的解释不够明确。我是编程新手。

2 个答案:

答案 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>。如果它不是,只需将它与真正的类交换,它应该仍然有效。

这些本地函数仅在函数范围内可用且可见,这非常有用。

我无法测试这个,所以让我知道这是如何工作的。