【发布时间】:2011-08-25 14:25:48
【问题描述】:
抱歉,我刚刚学习 LINQ,对它还比较陌生。
是否可以将以下内容转换为 LINQ?
foreach (DataRow gradeCount in GraceTable.Rows)
{
if (Convert.ToDecimal(obtMarksRow["Percentage"]) >=
(Convert.ToDecimal(gradeCount["EXG_MARKS_ABOVE"])) &&
(Convert.ToDecimal(obtMarksRow["Percentage"]) <=
Convert.ToDecimal(gradeCount["EXG_MARKS_BELOW"])))
{
string Grade = Convert.ToString(gradeCount["EXG_GRADE_NAME"]);
}
}
编辑:抱歉,我错过了 ma 查询中的每个循环,而 obtMarksRow 来自另一个循环之外的循环
我是这样写的查询
var gradeValue = from DataRow gradeRow in GraceTable.Rows
let marksAbove = gradeRow.Field<decimal>("EXG_MARKS_ABOVE")
let marksBelow = gradeRow.Field<decimal>("EXG_MARKS_BELOW")
where obtMarksRow.Field<decimal>("Percentage") >= marksAbove && obtMarksRow.Field<decimal>("Percentage") <= marksBelow
select gradeRow.Field<string>("EXG_GRADE_NAME");
但我得到的值 (gradeValue.ToString() ) 为“System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Data.DataRow,System.String]”
怎么了?
【问题讨论】:
-
是的,这是可能的,但你为什么要转换它?
-
我在这里没有看到收藏。 Linq 用于查询任何实现 IEnumerable 的集合。
-
LINQ 用于查询可枚举类型。这只是一个 If 语句。除非这是在使用 obtMarksRow 迭代的循环的上下文中(在这种情况下您需要提供更多代码),否则这与 linq 无关。
-
您应该将您的代码转换为无缘无故不使用
Convert。 -
@Nithesh Hebri:我为您的编辑写了回复。