4

以下のコードからわかるように、リスト内のリスト内からオブジェクトのコレクションを構築しています。この厄介なメソッドを記述するより良い方法があるかどうか疑問に思っています。

事前に乾杯

private List<ListINeed> GetListINeed(Guid clientId)
         {
         var listINeed = new List<objectType>();
             someobject.All(p =>
                                 {
                                     p.subcollection.All(q =>
                                                        {
                                                            listINeed.Add(q.subObject);
                                                            return true;
                                                        });
                                     return true;
                                 });
             return listINeed;
         }
4

3 に答える 3

5

SelectManyを使用する

private List<ListINeed> GetListINeed(Guid clientId)
{
    return someobject.SelectMany(p=> p.subcollection)
                             .Select(p=>p.subObject).ToList();
}
于 2012-11-29T11:50:56.403 に答える
1

クエリ構文の使用に興味がある場合は、これで問題ありません。

var query = from c in someObject
            from o in c.subCollection
            select o;

これにより、一部のシナリオで読みやすくなります。たとえば、

var query = from c in someObject
            from o in c.subCollection
            where c.SomeValue > 12
            select o;

個人的な好みですが、クエリ構文が読みやすいと思います。:)

于 2012-11-29T12:23:32.130 に答える
0

どうですか

return someobject.SelectMany(so=>so.subcollection).Select(o=>o.subObject).ToList();

これは、(clientIdパラメーターによって示唆されているように)そこで何か他のことをする予定がない限り、関数の必要性をほとんど否定します。

于 2012-11-29T11:53:08.080 に答える