c# - .Net Core 2.1 是否支持 LINQ 和 Lambda 表达式?
问题描述
我已经在安装了 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 表达式转换为类型‘字符串’,因为它不是委托类型”。这些是我的使用:
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 中实现枚举器。此问题在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];
}
}
推荐阅读
- docker-compose - 在多镜像、多域 docker-compose.yml 中使用letsencrypt-nginx-proxy-companion
- python - ValidationError 或 TypeError、ValueError - 异常
- javascript - 使用 Flow 检索函数参数类型
- angular - 离子4字符串到html
- postgresql - 将 varchar 列转换为 UUID 时输入无效
- gradle - 由于 gradle 问题,flutter webview_flutter 插件无法工作?
- python - 如何使用 Tkinter-Canvas 的数学函数上的 'exec()' 语句来创建图形?
- reactjs - 容器不是 React 中的 DOM 元素?
- c++ - 这个合并排序程序有什么问题?
- javascript - 为什么我会收到错误“找不到变量 $”和“未定义文档”