2011-10-19 46 views
4

请帮我把它转换为C#相当于VB LINQ到C#的LINQ

Dim dtData As DataTable = Session("Data") 

Dim aFilters = From oRow In dtData _ 
Where oRow(i_oColumn.BaseColumnName) IsNot DBNull.Value _ 
Select sFilter = _ 
oRow.Field(Of String)(i_oColumn.BaseColumnName).Replace("""", "\""") _ 
Distinct Order By sFilter 

回答

3

未经检验的,但相当直接翻译(有一些整理):

DataTable data = (DataTable)Session["Data"]; 

var filters= (from row in data.AsEnumerable() 
       where !(row[i_oColumn.BaseColumnName] is DBNull) 
       let result = (row.Field<string>(i_oColumn.BaseColumnName)) 
               .Replace(@"""",@"\""") 
       orderby result 
       select result).Distinct(); 

我怀疑,但是,认为:

   where !row.IsNull(i_oColumn.BaseColumnName) 

woulc更清晰