[英]LINQ Query on Datatable to check if record exists
我想对名为Records的数据表执行LINQ查询,并检查是否存在记录。 如果它存在,我想找出它所在的行。我怎么能这样做呢?
我想在添加system.linq命名空间后在我的数据表上做一个.where但该方法似乎不存在。 请指教
PS:我在2010年使用c#
DataTable不是默认使用Enumerable。 你必须转换为
var result = from p in dataTable.AsEnumerable()
where p.Field("ID") == 2
select p.Field("Name");
if(result.Any())
{
//do your work
}
阅读这篇文章
了解你使用Field<T>
您无法使用该方法,因为DataRowCollection
未实现IEnumerable<T>
。 您需要使用AsEnumerable()
扩展:
var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...
您可能还需要一个对System.Data.DataSetExtensions
的项目引用,以使其工作。
祝好运!
如果你有一个表,如:
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");
然后,
Console.WriteLine(
dt.Rows.IndexOf(dt.AsEnumerable().Where(c => c.Field<String>(1) == "d").FirstOrDefault())); // `1:= index of column
会导致-1
因为找不到"d"
。 但,
Console.WriteLine(
dt.Rows.IndexOf(dt.AsEnumerable().Where(c => c.Field<String>(1) == "b").FirstOrDefault())); // `1:= index of column
将得到1
,表示"b"
所在的行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.