如何处理返回0匹配的DataServiceQuery
本文关键字:0匹 DataServiceQuery 返回 何处理 处理 | 更新日期: 2023-09-27 17:54:05
我在Visual Studio 2013中用c#创建了一个简单的WCF数据服务。
然后我用asp.net和c#创建了一个web应用程序。
我有两个文本框和一个按钮。
我在第一个文本框中放置了一个代码。我按下按钮。运行以下代码。如果我输入的代码与webservice公开的列表中的记录匹配,则没有问题。
然而,如果我输入一个不存在的代码,我没有线索如何测试它。现在唯一有效的方法是Try - Catch,但我不相信这是正确的做法。
var proxy = new NorthwindEntities(new Uri("http://localhost:27214/NorthwindCustomers.svc"));
var customers = proxy.Customers;
if (string.IsNullOrEmpty(Code.Text))
{ return; }
var customer = (from c in customers where c.CustomerID == Code.Text select c).Single();
if (customer == null) //If there are no customers... it gives me an error.
{
Nom.Text = null;
}
else
{
Nom.Text = customer.CompanyName;
}
Code.Text = string.Empty;
看看这个:-
你在这行得到错误:-
var customer = (from c in customers where c.CustomerID == Code.Text select c).Single();
因为(from c in customers where c.CustomerID == Code.Text select c)
没有返回和。单个是异常的原因(序列不包含匹配的元素)
替换为:-
var customer = customers.FirstOrDefault(c=> c.CustomerID == Code.Text);
或
var customer = (from c in customers where c.CustomerID == Code.Text select c).SingleOrDefault();
这将解决这个问题。
作为一个建议,请将此代码包装在集合的空检查中:-
if(customers != null)
{
var customer = customers.FirstOrDefault(c=> c.CustomerID == Code.Text);
.....
..... // Other code.
}