0

ステータスコードオブジェクトを含めるためにLINQで作成したリストのリストがあります。

List<List<StatusLookup>> statusList = new List<List<StatusLookup>>();

foreach(var action in DbmsReport.Actions){
    statusList.Add((from stat in MyFactory.CreateQueryable<StatusLookup>()
                    where stat.ActionTypes.Contains(action)
                    select stat).ToList());
}

どういうわけかこれを解析してstatusList、リストの各リストにあるすべてのStatusLookupオブジェクトを見つける必要があります。たとえば、次のようになります。

DbmsReport.Actions = ( sprint, fight );

StatusLookup = ( { id = 0, text = "exhausted", ActionTypes = ( sprint, fight ) }
                 { id = 1, text = "tired", ActionTypes = ( jog, sprint, fight ) }
                 { id = 2, text = "rested", ActionTypes = ( sleep ) }
               );

StatusLookupしたがって、この場合、「使い果たされた」と「疲れた」を順不同で含むリストを取得する必要があります。このリストを取得するための最良の方法は何ですか?この例でわかるように、StatusLookupそれぞれに1つまたは1つ以上存在する可能性がありますDbmsReport

4

2 に答える 2

1

これを試して平らにしてください。さらに、必要に応じて where 句を追加できます。

var r = from p in statusList
        from q in p
        select q;
于 2012-09-05T14:56:35.530 に答える
1

しかできないの?

var lookups= MyFactory.CreateQueryable<StatusLookup>()
             .Where(x=> DbmsReport.Actions.All(y=>x.ActionTypes.Contains(y))).ToList();

または or 条件が必要な場合 (つまり、Report= sprint,fight で、sprint または fight のいずれかを持つすべてのルックアップを検索する場合)

var lookups= MyFactory.CreateQueryable<StatusLookup>()
             .Where(x=> DbmsReport.Actions.Any(y=>x.ActionTypes.Contains(y))).ToList();
于 2012-09-05T15:16:40.800 に答える