我有一个列表,我用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
DbmsReport
答案 0 :(得分:1)
尝试将其展平,另外您可以根据需要添加where子句。
var r = from p in statusList
from q in p
select q;
答案 1 :(得分:1)
你能做到吗?
var lookups= MyFactory.CreateQueryable<StatusLookup>()
.Where(x=> DbmsReport.Actions.All(y=>x.ActionTypes.Contains(y))).ToList();
或者如果你想要一个或者条件(即Report = sprint,fight,你想要找到所有有冲刺或战斗的Lookup)那么
var lookups= MyFactory.CreateQueryable<StatusLookup>()
.Where(x=> DbmsReport.Actions.Any(y=>x.ActionTypes.Contains(y))).ToList();