操作符& # 39;= = & # 39;不能应用于'int'类型的操作数和& # 39;System.

本文关键字:操作数 System 应用于 不能 操作符 int 类型 | 更新日期: 2023-09-27 18:09:58

所以我有点卡住了!在做大学的编程作业时,我遇到了瓶颈。

在我们的一个部分中给出的问题如下:

" 2。允许用户查找在特定年份下过订单的客户。提供一个组合框,它列出了订单表中用户可以使用的所有唯一(不同)年份做一个选择。"

我在转换"Year"时遇到了一个问题,所以我可以将其与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;
}  

操作符& # 39;= = & # 39;不能应用于'int'类型的操作数和& # 39;System.

您的year查询返回与where子句匹配的所有OrderID值的列表。您不能将该列表与order查询中的单个o.OrderID进行比较;如果要查找years查询返回年份中的所有订单,请使用

之类的内容。
where year.Contains(o.OrderID)

(未经测试,但应该会引导您找到正确的路线)

var year = (from y in northwind.Orders
                   where Convert.ToString(y.OrderDate).Contains(selection)
                   select y.OrderID).Single();
var order = from o in northwind.Order_Details
                    where o.OrderID == year
                    select new { 
                                  o.OrderID, 
                                  o.ProductID, 
                                  o.UnitPrice, 
                                  o.Quantity, 
                                  o.Discount 
                                };

LINQ查询也返回System.Linq.IQueryable<T>,如果你想取单个值,你应该使用Single()/First()扩展。

如果您不确定查询结果是否包含对象,您应该查询FirstOrDefault()SingleOrDefault() (SingleOrDefault()在集合中只包含一个元素时抛出异常),如果结果中没有元素,则返回default(T)

类型非常重要,字符串的世界是不安全的。

string selection = dateDDL.SelectedItem.ToString();
int year = Int32.Parse(selection);
var orders =
  from order in northwind.Orders
  where order.OrderDate.Year == year
  select order;

" 2。允许用户查找在特定年份下过订单的客户。提供一个组合框,其中列出订单表中所有唯一(不同)的年份,用户可以从中进行选择。"

嗯,这个查询不应该是关于客户的吗?