我试图将我的列表拆分成多个较小的列表,但不知道我应该怎么做。
List<Object> list = new List<Object>();
这是我的原始列表,其中包含Object对象。我试图根据此Object的变量拆分此列表。
示例:
public class Object {
string var1;
int var2;
int var3;
}
假设列表对象有3个可能的var1(“是”,“否”,“可能”)然后我想要3个列表,其中每个列表都是具有“是”,“否”或“可能”的对象作为var1(这可以是100个对象的列表,每个对象都是这个字符串之一)(var1中的可能性不是恒定的)
答案 0 :(得分:3)
在这里,您将拥有对象的拆分列表。你可以根据你班级的财产使用小组。类似的东西。
var splittedList = list.GroupBy(c=>c.var1).Select(c => c.ToList()).ToList() ;
这里splittedList的类型为List<List<YourObject>>
因此对于您的Yes, No, MayBe
情况,它将返回3个列表的列表。这三个中的每一个都包含具有相同var1
属性
答案 1 :(得分:2)
查看ILookup:
var splitted = list.ToLookup(item => item.var1);
答案 2 :(得分:1)
使用System.Linq:
List<Object> listYes = list.Where(o => o.var1 == "yes").ToList();
List<Object> listNo = list.Where(o => o.var1 == "no").ToList();
List<Object> listMaybe = list.Where(o => o.var1 == "maybe").ToList();
这将为您提供3个对象列表,其中var1等于Where()
子句中的相应值。
答案 3 :(得分:0)
List<Object> list1 = new List<Object>();
List<Object> list2 = new List<Object>();
for (int i=0;i<list.Count;i++)
{
if (list.var1 == 0)
{
list1.Add(list[i]);
}
if (list.var1 == 1)
{
list2.Add(list[i]);
}
}