我收集了一些电子邮件.我需要使用我的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)
也许你有任何解决方案?
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)
注:在firstArray与secondArray上述可能不准确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)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |