2013-04-11 3 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

+0

Каковы входы/выходы 'sumstring'? –

ответ

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

tank OK Но когда я подключаюсь к базе данных, мы можем изменить код Что такое код –

+0

Я подключаюсь к базе данных, мы можем изменить код Что такое код –

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(); 
Смежные вопросы