其他分享
首页 > 其他分享> > CodeGo.net>的DataTable选择方法“不打算使用”?

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):

Resharper tooltip for .Select()

与我有关的部分是,“此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