2010-12-07 2 views
1
List<MyClass> SampleList = new List<MyClass>() { new MyClass(), new MyClass(), new MyClass() }; 
    string AggCount = SampleList.Aggregate((counter, next) => counter.f_ToString() += next.f_ToString()); 
} 

} 

internal class MyClass 
{ 
    public string f_ToString() 
    { 
     Random rnd = new Random(); 
     return rnd.Next(1000).ToString(); 
    } 
} 

alt textСовокупной проблема функции

+3

Что вы на самом деле пытаетесь сделать? – LukeH 2010-12-07 13:05:41

+0

в чем ваш вопрос на самом деле? сообщение совершенно очевидно: вы не можете использовать вызов метода как то, что вы хотите назначить – PierrOz 2010-12-07 13:06:17

ответ

2

Это выглядит, как вы час ave список MyClass под названием SampleList, и для каждого элемента на нем вы хотите позвонить f_ToString и создать одну строку из них всех. Вам не нужно Aggregate, попробовать (на .Net 4.0):

string agg = String.Concat(SampleList.Select(myClass => myClass.f_ToString())); 

на .Net 3.5, что Concat нуждается в массив, так что бы:

string agg = String.Concat(
    SampleList.Select(myClass => myClass.f_ToString()).ToArray() 
    ); 

Если вы все еще хотите использовать Aggregate, хотя нет никаких оснований здесь, это должно быть написано как:

string agg = SampleList.Aggregate("", 
        (counter, next) => counter + next.f_ToString()); 

Обратите внимание, что counter является строкой здесь, так что вы не можете позвонить f_ToString в теме.

В заключение я бы посоветовал вам лучше выбрать лучшие имена для ваших переменных.

1

Вы пытаетесь присвоить значение методы f_ToString(). Заменить + = с +

int AggCount = SampleList.Aggregate((counter, next) => counter.f_ToString() + next.f_ToString()); 
1

из

int AggCount = SampleList.Aggregate((counter, next) => counter.f_ToString() += next.f_ToString()); 

изменения в

int AggCount = SampleList.Aggregate((counter, next) => counter.f_ToString() + next.f_ToString()); 

becus и использовать присвойте оператор вместо Concat строки

Смежные вопросы