我使用string.join连接字符串,我想追加?每当连接字符串中有NULL时。
现在它显示如下:
a,b,c,,e
我想这样表现出来:
a,b,c,?,e
LINQ:
var listStr = (from c in cc.ccValues select c.ccValue).ToList();
return string.Join(",", listStr);
答案 0 :(得分:3)
这很简单,您只需事先预测数据。
假设您使用IEnumerable<string>
作为data
:
// replace null with "?"
var normalizedData = data.Select(s => s ?? "?");
return string.join(",", normalizedData);
答案 1 :(得分:2)
只需用“?”替换null。
var strings = new List<string>{"a","b","c",null,"e"};
String.Join(",", strings.Select(s => s == null ? "?" : s));
<强>更新强>
只获取每个字符串一次,但用“?”替换每个空字符串您可以将LINQ Distinct
与自定义IEqualityComparer<T>
一起使用。
var str = String.Join(",", strings.Distinct(new NullStringsAreDistinctComparer()).Select(s => s == null ? "?" : s));
比较器可能如下所示:
class NullStringsAreDistinctComparer : IEqualityComparer<string> {
public bool Equals(string x, string y) {
return (x == null) ? y != null : x.Equals(y, StringComparison.InvariantCulture);
}
public int GetHashCode(string obj) {
return (obj == null) ? 0 : obj.GetHashCode();
}
}
答案 2 :(得分:0)
string a ="a,b,c,,e,f,,h";
a.Replace(",,",",?,");
output : a,b,c,?,e,f,?,h
<强> .NetFiddle 强>