如何使用linq C#查询smallInt主键上的数据集table
How to query dataset table on primary key of smallInt using linq C#
假设我有以下 sql table。 Customer_id 列是具有 smallint 的主键。
我正在尝试创建一个 linq 查询,我想在其中获取 ID 为 1 的客户的所有数据。
如何操作。
已完成但未运行:
1.
var query = from row in dt.AsEnumerable()
where row.Field<Int32>("customer_id") == Convert.ToInt32(2)
select row;
2.
var query = from row in dt.AsEnumerable()
where row.Field<Int16>("customer_id") == Convert.ToInt16(2)
select row
- 调试例如 1,2
- 语法错误
- 例外情况
尝试使用 short
类型而不是 Int32
。
你为什么不用这个:
DataRow needle = hayStack.Tables["Customer"].Rows.Find(2);
你的方法应该重写成这样:
private DataRow GetCustomerDetails(Int16 customer_id)
{
return _dt.Tables["Customer"].Rows.Find(customer_id);
}
调用方法必须检查从该方法 return 发出的 null
,因为无效的 customer_id 会导致 Find()
tu return null
.
假设我有以下 sql table。 Customer_id 列是具有 smallint 的主键。
我正在尝试创建一个 linq 查询,我想在其中获取 ID 为 1 的客户的所有数据。
如何操作。
已完成但未运行:
1.
var query = from row in dt.AsEnumerable() where row.Field<Int32>("customer_id") == Convert.ToInt32(2) select row;
2.
var query = from row in dt.AsEnumerable() where row.Field<Int16>("customer_id") == Convert.ToInt16(2) select row
- 调试例如 1,2
- 语法错误
- 例外情况
尝试使用 short
类型而不是 Int32
。
你为什么不用这个:
DataRow needle = hayStack.Tables["Customer"].Rows.Find(2);
你的方法应该重写成这样:
private DataRow GetCustomerDetails(Int16 customer_id)
{
return _dt.Tables["Customer"].Rows.Find(customer_id);
}
调用方法必须检查从该方法 return 发出的 null
,因为无效的 customer_id 会导致 Find()
tu return null
.