2013-04-11 122 views
-1

如何创建一个扩展方法将字符串得到一笔 创建Sumstring扩展方法创建扩展方法LINQ

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

字符串的总和是多少?级联? – zneak 2013-04-11 19:01:14

+0

'sumstring'的输入/输出是什么? – 2013-04-11 19:04:09

回答

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, ",") 
+0

坦克好吧 但是当我连接到数据库时,我们可以更改代码 什么是代码 – 2013-04-13 18:28:20

+0

我连接数据库,我们可以更改代码什么是代码 – 2013-04-14 07:49:17

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();