2015-06-04 4 views
0

Здравствуйте, я использую динамический LINQ, и я запрос, как этот:Foreach Динамические Linq Несколько столбцов

var result = DataContext.Table 
    .Where("Code == @0", CodeId) 
    .Select("new(SGL AS First, DBL AS Second)"); 

Как я могу цикл результат?

Я использую что-то вроде этого кода, но он не работает:

foreach (var item in result) 
{ 
    total = subtotal + Int32.Parse(item.ToString()) * 2 
} 

возвращает следующее сообщение об ошибке:

The input string does not have the correct format.

+0

код, который вы выделили не ваше вопрос ... Я считаю, что проблема внутри вашего foreach –

+0

Как я могу извлечь первое значение и второе значение внутри цикла foreach? Это то, что я хочу знать –

+0

Вы проверили, что содержит результат? – Angloos

ответ

1

Проблема находится в вашем foreach цикле, а не с динамический linq. Эта линия:

total = subtotal + Int32.Parse(item.ToString()) * 2 

ли собирается преобразовать объект в строку, которая будет выглядеть примерно так:

{First=XXX, Second=YYY} 

И если вы пройдете, что непосредственно Int32.Parse вы получите сообщение об ошибке, вы можете описать.

Вместо этого вы хотите работать с свойствами объекта. Одним из способов является приведение объекта в значение dynamic, то вы можете получить свойства, как и любой другой объект:

dynamic obj = resultItem; 
total = subtotal + Int32.Parse(obj.First) * 2 
+0

yes, выбрал два поля, и он пытается преобразовать их в Int – Yuri

+0

Здравствуйте, я использовал ваш код, и я получил эту ошибку: оператор '*' не может быть применен к операндам типа DynamicClass1 и int. Спасибо за ваш Ответ –

+0

@LuisLora Какие типы 'total' и' subtotal'? – DavidG

0

вы должны попытаться

foreach (var item in result) 
{ 
    total = subtotal + Int32.Parse(item.First) * 2 
} 
+0

Вы не можете сделать это, когда тип 'object'. – DavidG

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