linq与未分配的变量参数

时间:2010-11-02 21:34:02

标签: c# linq

我在主函数

的顶部有以下变量声明
string brand;
double price;
var itemList6 = from i in myStore.items
    where i.price <= price && i.brand == brand
    orderby i.type
    select i;

稍后在程序中,我向用户询问品牌和价格,将它们放入适当的变量中,然后运行查询。但是,编译器不会让我运行它,因为我在查询中使用未分配的变量。是通过初始化变量来解决这个问题的唯一方法吗?我通常尝试不初始化变量,如果我不需要初始值,因为我发现它令人困惑(试图了解以后/为什么我使用该默认值)。

3 个答案:

答案 0 :(得分:3)

您可以编写一个函数并将这些变量作为参数传递,以避免初始化。

如果您最终初始化,请考虑使用??以避免空值。

答案 1 :(得分:1)

在构造LINQ查询之前,必须为变量赋值。

原因是编译器正在使用变量来构造查询。即使查询不会被执行,编译器也需要在使用前分配变量,编译器会将查询表达式构建为use。

我的建议只是在那里加上一些名义上的默认/临时值。

答案 2 :(得分:0)

另一种解决方法是在明确为这些变量赋值之后再创建查询对象。