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“疲惫”和“疲倦”的列表,没有特定的顺序,获取此列表的最佳方法是什么?从这个例子中可以看出,每个可以有 1 个或多于 1StatusLookupDbmsReport

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();

或者如果您想要一个或条件(即 Report= sprint,fight 并且您想查找所有具有 sprint 或战斗的查找)然后

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