我有one
列的数据
我想用包装器div
连接每个文件名类似的东西:
<div>File Attached : file1 </div>
<div>File Attached : file2 </div>
<div>File Attached : file3 </div>
...
我已经成功了:
string f = String.Join(" ", (from dr in dt.AsEnumerable()
select "<div>File Attached : " + dr[0].ToString() + "</div>").ToArray<string>());
但没有成功:
http://i.stack.imgur.com/xCKLD.jpg
如何在Join
方法之后使用。ToArray
方法执行此操作?
答案 0 :(得分:2)
Join
与您发现的String.Join
不同。 Enumerable.Join
就像加入数据库一样(但仍然在本地对象上,Queryable.Join可以与SQL一起使用。)这里给出了一个例子:
http://msdn.microsoft.com/en-us/library/bb534675.aspx
你可以(但我不推荐它,因为它对用户来说不明确)写一个像这样的扩展方法:
public static class StringExtensions
{
public string Join(this IEnumerable<string> source, string sep)
{
return string.Join(sep, source.ToArray()); // You can erase `.ToArray()` if you're using .Net 4
}
}
然后它适用于(...).Join(" ")
。
我的解决方案:(4.0)
var query = from dr in dt.AsEnumerable() // You may be able to erase `AsEnumerable` depending on your source
select "<div>File Attached : " + dr[0] + "</div>";
var f = string.Join(" ", query);
我的解决方案:(3.5)
var arr = dt.AsEnumerable()
.Select(dr => "<div>File Attached : " + dr[0] + "</div>")
.ToArray();
var f = string.Join(" ", arr);
答案 1 :(得分:1)
你确定Join功能是正确的吗?听起来你可能正在使用Aggregate
函数来得到相同的结果,如下所示:
dt.AsEnumerable().Aggregate(string.Empty, (x,y) => x + string.Format("<div>File Attached : {0} </div>", y));