如何为字符串创建扩展方法以获得总和 创建Sumstring扩展方法
List<myclass> obj=new List<myclass>()
{
new myclass(){ID=1,name="ali",number=1},
new myclass(){ID=1,name="karimi",number=2},
new myclass(){ID=2,name="mohammad",number=4},
new myclass(){ID=2,name="sarbandi",number=5},
};
var query = (from p in obj
group p by p.ID into g
select new
{ id = g.Key, sum = g.Sumstring(p => p.name) }).ToList();
dataGridView1.DataSource=query;
我连接到数据库 代码是什么
答案 0 :(得分:0)
您没有指定SumString
真正返回的内容,但看起来您正在讨论所有源集合元素的字符串连接。
可以使用String.Join
方法轻松完成:
public static class EnumerableOfString
{
public static string SumString<TSource>(this IEnumerable<TSource> source, Func<TSource, string> selector, string separator = null)
{
return String.Join(separator ?? string.Empty, source.Select(i => selector(i)));
}
}
该方法允许以下调用:
g.SumString(p => p.name)
将string.Empty
作为默认的deparator并指定了自定义分隔符:
g.SumString(p => p.name, ",")
答案 1 :(得分:0)
如果您只想连接该组中的字符串,则可以使用内置的Aggregate
函数:
var query = (from p in obj
group p by p.ID into g
select new
{ id = g.Key, sum = g.Aggregate((tot, next) => tot + "," + next) }
).ToList();