2

現時点では、NoOfRows プロパティに基づいて、すべてのデータがリストに入力されているかどうかを返す以下のようなコードがあります。

switch (NoOfRows)
            {
                case 1:
                    return InputList1.Any();
                case 2:
                    return InputList1.Any() && InputList2.Any();
                case 3:
                    return InputList1.Any() && InputList2.Any() && InputList3.Any();
                case 4:
                    return InputList1.Any() && InputList2.Any() && InputList3.Any() && InputList4.Any();
                case 5:
                    return InputList1.Any() && InputList2.Any() && InputList3.Any() && InputList4.Any() && InputList5.Any();
                case 6:
                    return InputList1.Any() && InputList2.Any() && InputList3.Any() && InputList4.Any() && InputList5.Any() && InputList6.Any();
                case 7:
                    return InputList1.Any() && InputList2.Any() && InputList3.Any() && InputList4.Any() && InputList5.Any() && InputList6.Any() && InputList7.Any();
                case 8:
                    return InputList1.Any() && InputList2.Any() && InputList3.Any() && InputList4.Any() && InputList5.Any() && InputList6.Any() && InputList7.Any() && InputList8.Any();
                case 9:
                    return InputList1.Any() && InputList2.Any() && InputList3.Any() && InputList4.Any() && InputList5.Any() && InputList6.Any() && InputList7.Any() && InputList8.Any() && InputList9.Any();
                case 10:
                    return InputList1.Any() && InputList2.Any() && InputList3.Any() && InputList4.Any() && InputList5.Any() && InputList6.Any() && InputList7.Any() && InputList8.Any() && InputList9.Any() && InputList10.Any();
                default:
                    return false;
            }

このコードをリファクタリングList<List<int>> or a Dictionary<int,List<int>>して、コレクション内の各リストに何かが含まれているかどうかを返すには、上記をどのように行うのがよいでしょうか?

List<List<int>> values = new List<List<int>>(){InputList1, InputList2 ... InputList10};
var lists = values.Take(NoOfRows);
lists.. //check each item and return value of Any for each one
4

5 に答える 5

6

サブリストが空かどうかだけを知りたい場合は、これを試してください。

var values = new List<List<int>>();  // create and load up...

...

// returns true if any sub-list is EMPTY
var isAnyEmpty = values.Any(l => !l.Any());

これにより、リストのリストにアイテムがないリストが存在するかどうかがチェックされます。

ただし、空のサブリストのインデックスが必要な場合は、すべての Any() の結果を保存できます。

// will return a lists of bools for Any() applied to each sub-list
var listStates = values.Select(l => l.Any()).ToList();

次に、値が存在する結果のインデックスは、falseアイテムのないリストになります。Selectまたは、別の方法として、インデックスを直接渡す特別な形式を使用することもできます。

于 2012-04-26T14:07:17.690 に答える
4

ネストされたリストを使用するとうまく機能します。selectmanyの使用を検討することをお勧めします

しかし、あなたが望むコードは次のようなものだと思います:

var nested = new List<List<int>>();
// put data in it

nested.All((inner) => inner.Any());
于 2012-04-26T14:07:00.020 に答える
1
var listoflists = new List<List<int>>;
bool allNonEmpty = listoflists.All(list => list.Any());
于 2012-04-26T14:08:36.130 に答える
0

次のようなことを試してみてください。

    bool ContainsEmptyCollection(IEnumerable<List<int>> collections)
    {
        foreach (var collection in collections)
        {
            if (collection.Count == 0)
                return true;
        }

        return false;
    }
于 2012-04-26T14:09:23.363 に答える
0

次のような意味ですか。

        List<List<int>> list = new List<List<int>>();
        bool anyNonEmpty = list.Any(x => x.Any());
于 2012-04-26T14:10:32.990 に答える