Mat*_*ser 15 .net c# linq linq-to-sql
有没有办法使用LINQ将对象集合转换为单个新对象?
我想在另一个LINQ to SQL表达式中使用它.
bru*_*nde 24
你为什么不用string.Join
它自己?
string.Join("<br/>", collection.Select(e => e.TextProp).ToArray());
Run Code Online (Sandbox Code Playgroud)
Sco*_*vey 14
您可以使用Aggregate方法......
var myResults = (from myString in MyStrings
select myString)
.Aggregate(string.Empty, (results, nextString)
=> string.Format("{0}<br />{1}", results, nextString));
Run Code Online (Sandbox Code Playgroud)
要么
var myResults = MyStrings.Aggregate(string.Empty, (results, nextString)
=> string.Format("{0}<br />{1}", results, nextString));
Run Code Online (Sandbox Code Playgroud)
正常的方法是使用聚合运营商(之一Aggregate
,Sum
,Average
等),但它完全取决于类型和你想要做什么.你对什么类型感兴趣?
编辑:好的,所以你想连接字符串...我不认为在LINQ to SQL本身有任何东西可以做到这一点.选项:
如果您有大量要连接的值,这里的大多数解决方案都相当低效。此外,它们并不是那么易读。如果你要经常做这种事情,那么构建你自己的扩展方法来做到这一点是值得的。下面的实现允许你做相当于string.Join(", ", arrayOfStrings)
arrayOfStrings 可以是 an 的地方IEnumerable<T>
,而分隔符可以是任何对象。它允许你做这样的事情:
var names = new [] { "Fred", "Barney", "Wilma", "Betty" };
var list = names
.Where(n => n.Contains("e"))
.Join(", ");
Run Code Online (Sandbox Code Playgroud)
我喜欢这个的两件事是:
public static string Join<TItem,TSep>(
this IEnumerable<TItem> 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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24518 次 |
最近记录: |