c#-Linq根据存储在SQL中的字符串返回单个整数值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-Linq根据存储在SQL中的字符串返回单个整数值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2402字,纯文字阅读大概需要4分钟。
内容图文
我对Linq很陌生,
我只是想做一个例行的返回,这通常是用SQL完成的,并且似乎无法从浏览多个小时的论坛中获得直接答案.
好的,我有一个表Customers,该表的CustomersID和CustomerName两列属于CustomersDataBase
我已经能够使用以下方法(以其基本形式)成功地从整数查询返回单个字符串:
public string getCustomerName(int custID)
{
CustomerDataBase cdb = new CustomerDataBase();
string custName = (
from c in cdb.Customers
where c.CustomerID == custID
select c.CustomerName)
.SingleOrDefault();
return custName;
}
好的,但是当我尝试通过尝试返回CustomerID来逆转情况时,它返回异常:System.InvalidCastException:指定的强制转换无效.
这是我的代码:
public int getCustomerID(string custName)
{
CustomerDataBase cdb = new CustomerDataBase();
int custID = (
from c in cdb.Customers
where c.CustomerName == custName
select c.CustomerID)
.SingleOrDefault();
return custID;
}
我也尝试过考虑使用SQL术语使custName字符串成为char数组:
public int getCustomerID(string custName)
{
CustomerDataBase cdb = new CustomerDataBase();
int custID = (
from c in cdb.Customers
where c.CustomerName == "'"+custName+"'"
select c.CustomerID)
.SingleOrDefault();
return custID;
}
异常消失了,但是即使我有数百个条目,CustomerID似乎也只返回“ 0”.
因此,在SQL中,我将仅使用以下内容:
Select CustomerID
from Customers
where CustomerName="'"+custName+"'"
任何帮助将非常感激!谢谢
//编辑代码使其正常工作(根据乔恩·斯基特的回答):
好的,这可行:
[表格(名称=“ TableCustomers”)
公共类客户
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public long CustomerID { get; set; }
[Column]
public string CustomerName { get; set; }
[Column]
}
//用于在SQL数据库中容纳BigInt
公共长getCustomerID(字符串custName)
{
CustomerDatabase cdb = new CustomerDatabase();
long custID = (from c in cdb.Customers
where c.CustomerName == custName
select c.CustomerID).SingleOrDefault();
return custID;
}
}
解决方法:
最终的方法肯定是错误的-您无需手动“引用”参数;基本上,您正在搜索带引号的值,并且它从SingleOrDefault返回0,因为它找不到该条目. (这就是SingleOrDefault的工作-如果没有结果,它将返回类型的默认值(此处为int).)
我怀疑您的CustomerID列可为空,或类似的内容-但是,如果不了解您的架构就很难分辨出来.您应该检查您的LINQ to SQL模型是否与您的数据库模式匹配.
如果有多个同名客户,您还应该考虑要发生的事情-当前,这将引发异常.那是你要的吗?
编辑:好的,现在您终于告诉我们了架构的内容,这很清楚. BigInt是一个64位整数,但是您在LINQ模型中使用的是32位属性.只需在LINQ模型中将CustomerID从int更改为long,然后将方法也更改为return long,就可以了.
内容总结
以上是互联网集市为您收集整理的c#-Linq根据存储在SQL中的字符串返回单个整数值全部内容,希望文章能够帮你解决c#-Linq根据存储在SQL中的字符串返回单个整数值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。