Foreach 动态 Linq 多列

Foreach Dynamic Linq Multiple Columns

你好,我正在使用动态 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
}

它returns出现以下错误:

The input string does not have the correct format.

问题出在您的 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

你应该尝试

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