首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net核心2.1支持LINQ和Lambda表达式吗?

.Net核心2.1支持LINQ和Lambda表达式吗?
EN

Stack Overflow用户
提问于 2018-09-14 02:23:35
回答 1查看 4K关注 0票数 4

我已经在Visual代码上尝试了下面的代码,并安装了OmniSharp扩展。我安装了.Net内核2.1.3。

代码语言:javascript
复制
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‘类型,因为它不是委托类型”。以下是我的用法:

代码语言:javascript
复制
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,有风险吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-14 04:01:30

DataTable没有在.NET Core2.1中实现枚举器。这个问题在Dotnet Github中是公开的,因此可能有一天会实现。

这意味着您需要使用一个循环来迭代行。您不能使用foreach,因为DataTable也没有实现IEnumerable

例如:

代码语言:javascript
复制
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扩展方法:

代码语言:javascript
复制
public static IEnumerable<DataRow> AsEnumerable(this DataTable table)
{
    for (int i = 0; i < table.Rows.Count; i++)
    {
        yield return table.Rows[i];
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52324157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档