Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ查询Datatable以检查记录是否存在_C#_Linq - Fatal编程技术网

C# LINQ查询Datatable以检查记录是否存在

C# LINQ查询Datatable以检查记录是否存在,c#,linq,C#,Linq,我想对名为Records的数据表执行LINQ查询,并检查记录是否存在。如果它存在,我想找出它所在的行。我该怎么做呢 在添加system.linq命名空间后,我想在我的datatable上执行.where操作,但该方法似乎不存在。请告知 注意:我在vs 2010中使用c#您不能使用该方法,因为DataRowCollection没有实现IEnumerable。您需要使用AsEnumerable()扩展名: var dataRowQuery= myDataTable.AsEnumerable().Wh

我想对名为Records的数据表执行LINQ查询,并检查记录是否存在。如果它存在,我想找出它所在的行。我该怎么做呢

在添加system.linq命名空间后,我想在我的datatable上执行.where操作,但该方法似乎不存在。请告知


注意:我在vs 2010中使用c#

您不能使用该方法,因为
DataRowCollection
没有实现
IEnumerable
。您需要使用
AsEnumerable()
扩展名:

var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...
您可能还需要一个对
System.Data.DataSetExtensions
的项目引用,以使其正常工作


祝你好运

DataTable不是默认的可枚举数据表。你必须转换成

  var result = from p in dataTable.AsEnumerable()
     where p.Field("ID") == 2
    select p.Field("Name");

   if(result.Any())
   {
      //do your work
    }
请阅读本文以了解更多信息


了解如何使用
字段

如果您有以下表格:

DataTable dt = new DataTable();

dt.Columns.Add("rownum", typeof(Int32));
dt.Columns.Add("val", typeof(String));

dt.Rows.Add(1, "a");
dt.Rows.Add(2, "b");
dt.Rows.Add(3, "c");
那么


将产生
1
,表示
“b”
所在的行

您可以使用检查记录是否存在。@paradox p是dataTable.AsEnumerable()的对象
Console.WriteLine(
                dt.Rows.IndexOf(dt.AsEnumerable().Where(c => c.Field<String>(1) == "d").FirstOrDefault())); // `1:= index of column
Console.WriteLine(
                dt.Rows.IndexOf(dt.AsEnumerable().Where(c => c.Field<String>(1) == "b").FirstOrDefault())); // `1:= index of column