我想使用Enumerable.Aggregate(...)方法来连接由分号分隔的字符串列表.相当容易,不是吗?
考虑以下因素:
private const string LISTSEPARATOR = "; ";List<TrackDetails>如果Distinct()返回的序列为空(由于Aggregate()方法不适用于空序列),以下语句将抛出异常:
txtDiscNumber.Text = album.OrderedTracks
.Where(a => a.DiscNumber.HasValue)
.Select(a => a.DiscNumber.Value.ToString())
.Distinct()
.Aggregate((i, j) => i + LISTSEPARATOR + j);
Run Code Online (Sandbox Code Playgroud)
我正在使用的解决方法:
List<string> DiscNumbers =
album.OrderedTracks
.Where(a => a.DiscNumber.HasValue)
.Select(a => a.DiscNumber.Value.ToString())
.Distinct()
.ToList();
if (!DiscNumbers.Any())
txtDiscNumber.Text = null;
else
txtDiscNumber.Text =
DiscNumbers.Aggregate((i, j) => i + LISTSEPARATOR + j);
Run Code Online (Sandbox Code Playgroud)
有没有更好的解决方案?是否可以在单个LINQ语句中执行此操作?
提前致谢.