2013-04-11 130 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();