【问题标题】:LINQ Select DataRow from DataTableLINQ 从数据表中选择数据行
【发布时间】:2013-08-16 11:44:05
【问题描述】:

我有一个 DataTable,我正在尝试做一个包含值的简单选择行。

我的代码

  var LoginDetails = from myRow in DTOperators.AsEnumerable()
                           where myRow.Field<string>(0) == UserName
                           select myRow;

我正在尝试检查字符串 UserName 是否存在于数据表中的行的位置 0

当我运行这个查询时,我得到一个空白数据行。

我尝试在我要选择的位置周围使用 []。

任何人都能看到我做错了什么。

【问题讨论】:

  • 看起来不错,有什么异常或问题?
  • 字段索引是否正确?我知道您想在位置 0 进行检查,但它是否包含名称?我尝试了一个简单的数据表,并检查了位置 1,它确实返回了 2 条记录。
  • 你正在检查==这里即使是空格也可能会造成麻烦!
  • 空白是指一个 DataRow 的所有字段都具有 null 和默认值吗?

标签: c# linq


【解决方案1】:

您必须检查是否与右列进行比较并检查表中的数据。这个工作正常:

var DTOperators = new DataTable();
var UserName = "test";
DTOperators.Columns.Add("UserName", typeof(string));
DTOperators.Rows.Add("test1");
DTOperators.Rows.Add("test");
var LoginDetails = from myRow in DTOperators.AsEnumerable()
                     where myRow.Field<string>(0) == UserName
                     select myRow;

我有一个数据行的 Enumerable。 您也可以尝试按 columnName 获取数据:

var LoginDetails = DTOperators.Rows
                              .Cast<DataRow>()
                              .Where(x => x["UserName"] == UserName).ToList();

【讨论】:

  • 小问题 - 两个版本都需要在文件中明确引用 System.Data 命名空间。第一个版本没有给你一个友好的方法来解决这个问题,而第二个版本可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多