c# - 根据标准对列表进行分区的最简单方法是什么?
问题描述
比方说,我们有一个像这样的对象定义,
class MyObject {
int id;
string name;
}
我们有一个 MyObjects 列表。
List<MyObject> objectList
现在,我需要根据哪些对象具有非空名称字段,将此 objectList 划分为 2 个子列表。
因此,在操作之后,我需要有 2 个列表,objectsWithName
其中 name 字段为非 null 并且objectsWithoutName
name 字段为 null (这是直接标准,但我更倾向于使用谓词将其划分为 2 个组)。
实现这一目标的最简单方法是什么?我可以在一次操作中做到这一点吗?允许使用 LINQ。
解决方案
两个 LINQ 语句可以:
var nameNotNull = objectList.Where(o => !string.IsNullOrEmpty(o.Name));
var nameNull = objectList.Where(o => string.IsNullOrEmpty(o.Name));
当然,您可以使用GroupBy
, 或更有效的foreach
语句。
要显示foreach
选项:
List<MyObject> nameNotNull = new List<MyObject>();
List<MyObject> nameNull = new List<MyObject>();
foreach (MyObject o in objectList)
{
if (!string.IsNullOrEmpty(o.Name))
{
nameNotNull.Add(o);
}
else
{
nameNull.Add(o);
}
}
推荐阅读
- c# - TransactionScope 打破 SqlConnection 池?
- r - Log Log Plot - 如何理解轴
- ruby-on-rails - Codeship 将测试标记为“失败”,即使没有错误
- r - 使用 purrr 中的 pmap 迭代具有时间序列函数的列表列表
- sql - PostgreSQL 基于列的条件计数
- javascript - 合并两个数组然后在javascript中计算它
- c - EOF 无法识别
- python-3.x - 带有设备型号 ID 和设备 ID 的树莓派分段错误的 Google 助手
- ruby-on-rails - Forest Admin 尚未在生产中显示模型,但在开发中显示它
- python - Anaconda3 的 python 找不到 kerberos 凭证缓存