gpt4 book ai didi

c# - 数据表选择方法 "not intended to be used"?

转载 作者:行者123 更新时间:2023-11-30 16:06:45 29 4
gpt4 key购买 nike

我正在尝试使用 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() 将其转换为列表,或者您可以编写如下 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)

或名称相似的重载之一。有关详细信息,请参阅链接的文档。很难强制它从一个重载到另一个重载,因为许多重载包含相同的签名,所以这可能是问题所在。

关于c# - 数据表选择方法 "not intended to be used"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791537/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com