在linq中创建扩展方法

时间:2013-04-11 18:57:19

标签: linq entity-framework

如何为字符串创建扩展方法以获得总和 创建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;

我连接到数据库  代码是什么

2 个答案:

答案 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();
相关问题