我的代码中有这样的方法可以帮助我生成基于逗号的字符串
public static class Extensions
{
public static string ToCommaList(this IEnumerable<string> val)
{
if (val.Count() == 0)
return string.Empty;
string ret = "";
foreach (var str in val)
{
ret = ret + str + ",";
}
ret = ret.EndsWith(",") ? ret.Remove(ret.Length - 1, 1) : ret;
return ret;
}
}
现在我的代码有问题,它无法在int列表上运行。我想做的是生成逗号列表,无论它是字符串还是int。我想在我的函数中检查它是否是int或string的列表,并在其上生成字符串。
我试图重构IEnumerable,但我觉得它不好。我只允许2种类型的对象(仅限字符串和int)。
有人可以告诉我代码,这样我就可以传递int和string两者,它会生成逗号列表。
答案 0 :(得分:6)
public static string ToCommaList<T>(this IEnumerable<T> val)
{
if (!val.Any())
return string.Empty;
return String.Join(",", val);
}
答案 1 :(得分:0)
你应该有一个通用的IEnumerable像这样:
public static string ToCommaList<T>(this IEnumerable<T> val)
{
if (val.Count() == 0)
return string.Empty;
string ret = "";
foreach (var str in val)
{
ret = ret + str + ",";
}
ret = ret.EndsWith(",") ? ret.Remove(ret.Length - 1, 1) : ret;
return ret;
}
答案 2 :(得分:0)
试试这个
public static string ToCommaList<T>(this IEnumerable<T> val) where T:class
{
if (val.Count() == 0)
return string.Empty;
StringBuilder sb=new StringBuilder();
if (typeof(T) == typeof(int))
{
var strng = val.Select(x => x.ToString());
foreach (var str in strng)
{
sb.AppendFormat("{0},", str);
}
return sb.ToString().Trim(new char[] { ',' });
}
else if (typeof(T) == typeof(string))
{
foreach (var str in val)
{
sb.AppendFormat("{0},", str);
}
}
return sb.ToString().Trim(new char[] { ',' });
}