繁体   English   中英

.Net Core 2.1 是否支持 LINQ 和 Lambda 表达式?

[英]Does .Net Core 2.1 Support LINQ and Lambda Expressions?

我已经在安装了 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 服务器上运行我的网络服务?

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];
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM