DataView 上的 LINQ

标签 linq ado.net dataview

我无法在不转换的情况下查询 DataView。 IsPresent 方法中的两行代码取自 "LINQ - Specified cast is not valid with dataview use " 并且似乎对每个人都有效,除了一位评论者。我正在“使用”LINQ 命名空间,那么我的问题是什么?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // works
            DataView o = new DataView();
            var p = from x in o.Cast<DataRowView>() where x.Row.Field<bool>("xxx") select x.Row;
        }

        public static bool IsPresent(DataView dvDataTag, string colName)
        {
            // does not work
            int count = dvDataTag.Count(drv => string.Equals("1", drv[colName].ToString())); 
            return dvDataTag.Any(drv => string.Equals("1", drv[colName].ToString()));
        } 

    }
}

错误 2 'System.Data.DataView' 不包含 'Any' 的定义,并且找不到接受类型为 'System.Data.DataView' 的第一个参数的扩展方法 'Any'(您是否缺少使用指令或程序集引用?) A:\TEMP\ConsoleApplication1\ConsoleApplication1\Program.cs ConsoleApplication1 20 20

最佳答案

尝试像在 Main 方法中那样转换表格:

            int count = dvDataTag.OfType<DataRowView>().Count(drv => string.Equals("1", drv[colName].ToString()));
        return dvDataTag.OfType<DataRowView>().Any(drv => string.Equals("1", drv[colName].ToString()));

我也试过.Cast<DataRowView>()就像在您的 Main 方法中一样,并且也已编译。

关于DataView 上的 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9090479/

相关文章:

mysql - 未编译 DataColumn 中的乘积表达式,显示错误为 "Cannot find column [max]."

具有 WCF 数据的 WPF 应用程序 - EF、Linq2Sql 或 WCF 数据服务 - 无似乎 'Easy'

c# - DataTable 使用带逗号的 Datacolumn Name 排序

asp.net - 在 VB.NET 中组合 B 列中的数据库单元格以匹配 A 列中的单元格

c# - 关于 LINQ 的 OOP 类结构的基本问题

sql - LINQ to Entities 实体化错误

c# - 查询永不返回

entity-framework - 使用 ADO.NET Entity Framework 编写 "queries"的经验法则

sql - 什么 SQL 查询或 View 将显示 "dynamic columns"

c# - 将数据从 ASP.NET Web 应用程序插入到 SQL Server