我对C#有一个问题,我想不出解决方案。 基本上我有多个来自数据库的对象,它们具有模板类型
的属性示例(Movie.templateType,其中templateTypes是Action,Comedy,Adventure和未指定)
如何对它们进行分组,以便将未指定的内容与其他templateTypes分开
我很确定可以使用LINQ groupby语句完成,但我无法弄清楚
答案 0 :(得分:1)
您只需在查询中使用where
即可。
var movieTemplates = (from mt in yourCollection
where mt.TemplateType != "Unspecified"
select mt).ToList();
答案 1 :(得分:1)
如果您的目标是获得两个单独的集合(一个用于指定项目,一个用于指定项目):
var sets = items.GroupBy(i => i.templateType != "unspecified");
// s.Key will be true for the group of specified items and false for the other
var specifiedItems = sets.FirstOrDefault(s => s.Key);
var unspecifiedItems = sets.FirstOrDefault(s => !s.Key);
以上是有效的,因为它只枚举原始集合一次,但它有点人为,还要求您对specifiedItems
和unspecifiedItems
进行空检查。不需要空检查的更清晰但效率稍低的方法是:
var specifiedItems = items.Where(i => i.templateType != "unspecified");
var unspecifiedItems = items.Where(i => i.templateType == "unspecified");