C# 这个小代码可以优化吗?

C# 这个小代码可以优化吗?,c#,entity-framework,optimization,C#,Entity Framework,Optimization,这很简单 List<string> stringArr = new List<string>(); foreach (var item in db.IconTags) { stringArr.Add(item.Tag); } string outPut = string.Join(",", stringArr); 或者梅比 string outPut = string.Join(",", db.IconTags, t => t.Tag); 你能做些很酷的

这很简单

List<string> stringArr = new List<string>();
foreach (var item in db.IconTags)
{
    stringArr.Add(item.Tag);
}
string outPut = string.Join(",", stringArr);
或者梅比

string outPut = string.Join(",", db.IconTags, t => t.Tag);

你能做些很酷的事吗?我可以创建自己的方法,但我希望有内置的东西。

在.NET 4或更新版本中,您可以编写以下内容:

string output = string.Join(",", db.IconTags.Select(t => t.Tag));
在.NET 3.5中,您需要添加对
ToArray
的调用:

string output = string.Join(",", db.IconTags.Select(t => t.Tag).ToArray());

在.NET 4或更新版本中,您可以编写以下内容:

string output = string.Join(",", db.IconTags.Select(t => t.Tag));
在.NET 3.5中,您需要添加对
ToArray
的调用:

string output = string.Join(",", db.IconTags.Select(t => t.Tag).ToArray());
是的,你能做到

如果您的目标是第一个代码可以工作的框架版本,那么您的第一个愿望也可以工作。它甚至可以在没有
.ToArray()
的情况下工作,因为
String.Join
方法采用
IEnumerable

在framework 3.5中,您需要
.ToArray()
,但在framework 3.5中,您的第一个代码也不起作用。

是的,您可以这样做

如果您的目标是第一个代码可以工作的框架版本,那么您的第一个愿望也可以工作。它甚至可以在没有
.ToArray()
的情况下工作,因为
String.Join
方法采用
IEnumerable


在framework 3.5中,您需要
.ToArray()
,但在framework 3.5中,您的第一个代码也不起作用。

如果您想减少对象实例化/lambda函数的数量,也可以这样做

StringBuilder builder = new StringBuilder();
for(var item in db.IconTags) {
    builder.Append(item.Tag).Append(",");
}
// We have one extraneous , so remove it
if(builder.Length > 1) {
    builder.Remove(builder.Length - 1, 1);
}
String output = builder.ToString();

如果希望减少对象实例化/lambda函数的数量,也可以这样做

StringBuilder builder = new StringBuilder();
for(var item in db.IconTags) {
    builder.Append(item.Tag).Append(",");
}
// We have one extraneous , so remove it
if(builder.Length > 1) {
    builder.Remove(builder.Length - 1, 1);
}
String output = builder.ToString();

根据你的选择,我认为优化意味着更少的代码行,而不是更高效的计算

您的第二个备选方案应使用Linq:

string.Join(",", db.IconTags.Select(iconTag => iconTag.Tag).ToArray());

更新:正如其他人所说,ToArray可以在.NET 4或更高版本中删除。

根据您的备选方案,我认为优化意味着更少的代码行,而不是更高效的计算

您的第二个备选方案应使用Linq:

string.Join(",", db.IconTags.Select(iconTag => iconTag.Tag).ToArray());

更新:正如其他人所说,ToArray可以在.NET 4或更高版本中删除。

我试过了!我不知道为什么我认为我不可能,谢谢男人:)我试过了!我不知道为什么我觉得我不可能谢谢男人:)