我已经在Visual代码上尝试了下面的代码,并安装了OmniSharp扩展。我安装了.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‘类型,因为它不是委托类型”。以下是我的用法:
using System.Linq;
using System.Data;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using RestfulAPI.Commons;
using RestfulAPI.Models.DBModels;如何在LinQ核心上使用.Net?LinQ似乎被.Net框架所支持。但是我希望我的webservices能够在Linux服务器上运行。如果使用您的解决方案,我无法在Linux服务器上运行我的webservices,有风险吗?
发布于 2018-09-14 04:01:30
DataTable没有在.NET Core2.1中实现枚举器。这个问题在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];
}
}https://stackoverflow.com/questions/52324157
复制相似问题