【发布时间】:2013-04-21 13:19:49
【问题描述】:
所以我有点卡住了!为大学做编程作业,我碰壁了。
我们在其中一个部分中得到的问题如下:
"2. 允许用户查找在特定年份下订单的客户。提供一个 组合框,其中列出了订单表中的所有唯一(不同)年份,用户可以从中 做出选择。”
我在转换“年份”时遇到问题,因此我可以将其与 OrderID 进行比较,并在列表框中显示数据库中的所有订单。
如果有人能帮我一把,将不胜感激! 谢谢!
这是我的代码:
private void dateDDL_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string selection;
selection = dateDDL.SelectedItem.ToString();
var year = from y in northwind.Orders
where Convert.ToString(y.OrderDate).Contains(selection)
select y.OrderID;
var order = from o in northwind.Order_Details
where o.OrderID == year
select new { o.OrderID,
o.ProductID,
o.UnitPrice,
o.Quantity,
o.Discount };
lbxOrderdate.ItemsSource = order;
}
【问题讨论】:
-
您正在将查询的结果与整数进行比较。您需要使用
First()或Single()之类的查询从查询中获取值,然后进行比较 -
var关键字陷阱 :-) 它并不总是适合代码可读性。如果你写了IQueryable<int> year,也许你会看到这个问题,所以你看到那不是int。 -
@polkduran:最好适当地命名变量。
-
+1 @siride ,是的,你是对的
-
我个人会将
dateDDL.SelectedItem转换为int。那么您就不需要执行 Convert.ToString(),这可能会生成次优 SQL。