0

我有一个关于 LINQ 列表的简单问题。我搜索了它,但没有找到类似的东西。我不知道其中哪一个更好(例如在性能方面)。

list1 = list.Where(x => x.property).ToList();

现在我想要相反的清单

list2 = list.Where(x=> !x.property).ToList();

我用过这个,但我不确定。

list2 = list.Except(list1).ToList();

我还考虑过建立一个小组并同时获得两个列表。这是一个包含两个列表的列表。迭代第一个列表很重。

你怎么看待这件事?非常感谢。

4

1 回答 1

2

老实说,我会选择:

var listEqual = new List<YourType>();
var listNotEqual = new List<YourType>();

foreach(YourType item in list)
    if (item.Property)
        listEqual.Add(item)
    else
        listNotEqual.Add(item);

可以使用

var lookup = list.ToLookup(x => x.Property);
var list1 = lookup[true].ToList();
var list2 = lookup[false].ToList();

(甚至删除ToList如果您不严格需要列表) - 这只会迭代您的序列一次,尽管您需要更多代码来处理输入中的所有内容都是trueor的情况false

于 2013-02-25T15:13:05.243 回答