如何通过哪里获得两个数组?

Med*_*tor -3 c# linq

我收集了一些电子邮件.我需要使用我的where表达式获取两个数组.

var firstArray = emailTo.Where(e => whiteList.Contains(e.Address));
var secondArray = emailTo.Where(e => !whiteList.Contains(e.Address));
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

PS在我写作的时候,我已经明白了如何做到这一点:

emailTo.ForEach(e => ... use if construction and add to array ... );
Run Code Online (Sandbox Code Playgroud)

也许你有任何解决方案?

Kin*_*ing 8

var twoArrays = emailTo.GroupBy(e => whiteList.Contains(e.Address),
                                (key,g) => g.ToArray())
                       .ToList();

var firstArray = twoArrays[0];
var secondArray = twoArrays[1]; 
Run Code Online (Sandbox Code Playgroud)

:在firstArraysecondArray上述可能不准确firstArray,并secondArray在你的代码.那是因为无法确定数组的顺序.为了确保,你可能要追加OrderBy(g=>g.Key)GroupBy,那么Select它是这样的:

var twoArrays = emailTo.GroupBy(e => whiteList.Contains(e.Address))
                       .OrderBy(g=>g.Key).Select(g=>g.ToArray())
                       .ToList();   
//Now the firstArray is always at the index 1
var firstArray = twoArrays[1];
var secondArray = twoArrays[0];                         
Run Code Online (Sandbox Code Playgroud)