Csharp/C#教程:是否有LINQ等效的string.Join(string,string )分享


是否有LINQ等效的string.Join(string,string )

有没有办法使用LINQ将对象集合转换为单个新对象?

我想在另一个LINQ to SQL表达式中使用它。

你为什么不使用string.Join本身?

 string.Join("
", collection.Select(e => e.TextProp).ToArray());

您可以使用Aggregate方法…

 var myResults = (from myString in MyStrings select myString) .Aggregate(string.Empty, (results, nextString) => string.Format("{0}
{1}", results, nextString));

要么

 var myResults = MyStrings.Aggregate(string.Empty, (results, nextString) => string.Format("{0}
{1}", results, nextString));

通常的方法是使用其中一个聚合运算符( AggregateSumAverage等),但这完全取决于类型和您想要做的事情。 你对什么类型感兴趣?

编辑:好的,所以你想连接字符串…我不认为在LINQ to SQL本身有任何东西可以做到这一点。 选项:

如果您想要连接大量的值,那么这里的大多数解决方案都是相当低效的。 而且,它们并非完全可读。 如果你经常要做这种事情,那么建立你自己的扩展方法是值得的。 下面的实现允许你做相当于string.Join(", ", arrayOfStrings) ,其中arrayOfStrings可以是IEnumerable ,而separator可以是任何对象。 它允许你做这样的事情:

 var names = new [] { "Fred", "Barney", "Wilma", "Betty" }; var list = names .Where(n => n.Contains("e")) .Join(", "); 

我喜欢的两件事是:

上述就是C#学习教程:是否有LINQ等效的string.Join(string,string )分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  1. 它在LINQ上下文中非常易读。
  2. 它非常有效,因为它使用StringBuilder并避免两次计算枚举,这在数据库场景(L2S,L2E或L2Nh)中很重要。
 public static string Join( this IEnumerable enuml, TSep separator) { if (null == enuml) return string.Empty; var sb = new StringBuilder(); using (var enumr = enuml.GetEnumerator()) { if (null != enumr && enumr.MoveNext()) { sb.Append(enumr.Current); while (enumr.MoveNext()) { sb.Append(separator).Append(enumr.Current); } } } return sb.ToString(); } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1006253.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐