我想要使用Linq動態選擇DataTable列由ColumnName,但要使用字段<>我必須明確地轉換它們或將所有對象,方塊效率不高。反向typeof使用Linq字段<T>
我想:
string[] colsNames = new[] { "Colum1", "Colum2" };
DataTable dt = StoredProcedure().Tables[0];
var cols = dt.Columns.Cast<DataColumn>().Where(c => cols.Contains(c.ColumnName));
if (cols.Any())
{
dt.AsEnumerable().Select(r => string.Join(":", cols.Select(c => r.Field<c.DataType>(c.ColumnName))))
}
但是,這將引發我一個錯誤The type or namespace name 'c' could not be found
如何轉換typeof(decimal)
到Field<decimal>("Column1")
例如?
有什麼意義?如果你不知道請求數據的類型,那麼你可以處理的只是一個'object' –
我知道請求數據的類型 – happygilmore
但是你說你正在按列名檢索數據。然後,IEnumerable出了什麼問題 requestedData = dt.AsEnumerable()。Select(r => r.Field (「ColumnName」))'? –