将此代码转换为LINQ?

Roo*_*noy 2 c# linq

对不起,我只是选择了LINQ并且相对较新.

是否可以将以下内容转换为LINQ?

    foreach (DataRow row in results.Rows)
    {
        if (row["REMARKS"].ToString() == "Passes" || row["REMARKS"].ToString() == "Promoted")
        {
            result = String.Concat(result,row["ROLL_NO"].ToString()," ");
        }
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

我们不知道最初的值result是什么让这很棘手,但假设你实际上只是想要一个以空格分隔的列表,我会这样做:

var query = from DataRow row in result.Rows
            let remarks = row["REMARKS"].ToString()
            where remarks == "Passes" || remarks == "Promoted"
            select row["ROLL_NO"].ToString();

string results = string.Join(" ", query);
Run Code Online (Sandbox Code Playgroud)

(请注意,DataTable没有实现IEnumerable<DataRow>,这就是为什么我使用显式类型范围变量.另一种方法是调用result.Rows.AsEnumerable(),并row隐式类型).

最后一行是假设.NET 4,它string.Join比早期版本有更多的重载.否则,这样做:

string results = string.Join(" ", query.ToArray());
Run Code Online (Sandbox Code Playgroud)

当然,如果你使用LINQ,那么你可能想远离移动DataTable等入手,并使用LINQ到SQL,实体框架,NHibernate的或任何可用的其他选项:)