我在c#。
中在Visual Studio 2013中创建了一个简单的WCF数据服务然后我使用asp.net和c#创建了一个Web应用程序。
我有2个文本框和一个按钮。
我在第一个文本框中放了一个代码。我按下按钮。以下代码运行。如果我输入的代码与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;
答案 0 :(得分:2)
看看这个: -
你在这一行收到错误: -
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)
没有返回而 nothing.Single 是异常的原因(序列不包含匹配的元素)
将其替换为: -
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.
}