CodeGo.net>的DataTable选择方法“不打算使用”?
作者:互联网
我正在尝试使用LINQ表达式将DataTable中的每一行转换为List对象中的条目.
我的代码:
DataTable dataTable = dataSet.Tables[0];
var intList = new List<int>(dataTable.AsEnumerable().Select(row => int.Parse(row["IntColumn"].ToString())));
这在我运行代码时实际上有效,但是我担心,因为当我将鼠标悬停在.Select()的用法上时,我看到了这一点(注意:我正在使用ReSharper 8.2.2000.5102):
与我有关的部分是,“此API支持.NET Framework基础结构,不能直接在您的代码中使用.”
我的问题是:如果我不应该使用.Select()的EnumerableRowCollection实现,应该怎么做?
解决方法:
可枚举的行集合被标记为“内部API类”(https://msdn.microsoft.com/en-us/library/bb907979(v=vs.110).aspx),因此您会得到“警告”,因为它包含在文档中.
许多选择也被标记为“内部API”,特别是您正在使用的选择.您必须在选择之前使用.ToList()将其转换为List,或者可以编写LINQ查询,例如:
var intList = (from r in dataTable.AsEnumerable()
select int.Parse(r["IntColumn"].ToString())).ToList()
您还可以使用未标记为API的Select语句之一,特别是:
Select<TRow, TResult>(Func<TRow, TResult>)
Select<TRow, TResult>(Func<TRow, Int32, TResult)
或类似命名的重载之一.有关详细信息,请参见链接的文档.由于许多重载包含相同的签名,因此很难将其从一个重载强制转换为另一重载,因此这可能是问题所在.
标签:visual-studio-2012,linq,c,net 来源: https://codeday.me/bug/20191119/2039936.html