我已经在安装了 OmniSharp 扩展的 Visual Studio Code 上尝试了以下代码。我安装了 .Net 核心 2.1.3。
List<MyType> listName = dataTableName.AsEnumerable().Select(m => new MyType()
{
ID = m.Field<string>("ID"),
Description = m.Field<string>("Description"),
Balance = m.Field<double>("Balance"),
}).ToList()
但是好像不能用AsEnumerable()。并显示消息“无法将 lambda 表达式转换为类型‘string’,因为它不是委托(delegate)类型”。这些是我的使用:
using System.Linq;
using System.Data;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using RestfulAPI.Commons;
using RestfulAPI.Models.DBModels;
如何在 .Net Core 上使用 LinQ? .Net Framework 似乎支持 LinQ。但我希望我的 webservices API 可以在 Linux 服务器上运行。如果使用您的解决方案有风险,我无法在 Linux 服务器上运行我的 Web 服务?
最佳答案
DataTable
未在 .NET Core 2.1 中实现 Enumerator。此问题已在 Dotnet Github 中打开,因此可能有一天会实现。
这意味着您将需要使用循环来遍历行。您不能使用 foreach,因为 DataTable 也没有实现 IEnumerable
。
例如:
for(int i = 0; i < dataTable.Rows.Count; i++)
{
var row = dataTable.Rows[i];
var temp = new MyType(){
ID = row["ID"],
Description = row["Description"],
Balance = Double.Parse(row["Balance"].ToString())
};
retList.Add(temp);
}
你也可以编写自己的AsEnumerable
扩展方法:
public static IEnumerable<DataRow> AsEnumerable(this DataTable table)
{
for (int i = 0; i < table.Rows.Count; i++)
{
yield return table.Rows[i];
}
}
关于c# - .Net Core 2.1 是否支持 LINQ 和 Lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52324157/