C#LINQ将对象与其他对象分开

时间:2015-03-15 18:15:58

标签: c# linq

我对C#有一个问题,我想不出解决方案。 基本上我有多个来自数据库的对象,它们具有模板类型

的属性

示例(Movie.templateType,其中templateTypes是Action,Comedy,Adventure和未指定)

如何对它们进行分组,以便将未指定的内容与其他templateTypes分开

我很确定可以使用LINQ groupby语句完成,但我无法弄清楚

2 个答案:

答案 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);

以上是有效的,因为它只枚举原始集合一次,但它有点人为,还要求您对specifiedItemsunspecifiedItems进行空检查。不需要空检查的更清晰但效率稍低的方法是:

var specifiedItems = items.Where(i => i.templateType != "unspecified");
var unspecifiedItems = items.Where(i => i.templateType == "unspecified");