我无法在不转换的情况下查询 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/