linq ToArray <string>()。Join(...)方法不起作用?</string>

时间:2012-01-09 10:51:38

标签: c# linq

我有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 enter image description here

如何在Join方法之后使用。ToArray方法执行此操作?

2 个答案:

答案 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));