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