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或更高版本中删除。我试过了!我不知道为什么我认为我不可能,谢谢男人:)我试过了!我不知道为什么我觉得我不可能谢谢男人:)