【发布时间】:2020-06-10 04:36:07
【问题描述】:
如何对列表中的数组对象执行字符串连接。该数组可能包含空值。当尝试使用以下代码时仅显示不可为空的值
arrError.Where(x=>x.subject != null).Select(r1 =>
{
r1.errors_path = String.Join("_", ((IList)r1.errors_path != null ? r1.errors_path : string.Empty).OfType<string>());
return r1;
}
)
输入列表结构为
name age subject[]
user1 25 null
user12 26 null
user2 30 [s1,s2,s3,s4]
user3 28 [s1,s3]
运行 linq 查询后,我想获取以下格式的列表
name age subject[]
user1 25 null
user12 26 null
user2 30 s1_s2_s3_s4
user3 28 s1_s3
【问题讨论】:
-
您应该使用“Language-integrated-QUERY-Language”来修改项。说了这么多,是什么反对一些好的旧式循环?
-
无法循环,
-
Eeeehm,循环怎么不可能?这对我来说听起来很奇怪。事实上,这与您的 linq 代码在后台执行的操作完全相同。
-
你为什么还要关心
null?String.Join能够很好地处理数组中的空元素。 -
您的
OfType将枚举从String.Join返回的字符串。由于该字符串中的 none 元素本身是一个字符串,而是一个char,因此您的结果字符串为空。