代码之家  ›  专栏  ›  技术社区  ›  Baruch

具有未分配变量参数的linq

  •  2
  • Baruch  · 技术社区  · 14 年前

    string brand;
    double price;
    var itemList6 = from i in myStore.items
        where i.price <= price && i.brand == brand
        orderby i.type
        select i;
    

    稍后在程序中,我向用户询问品牌和价格,将它们放入适当的变量中,然后运行查询。但是,编译器不允许我运行此操作,因为我正在查询中使用未分配的变量。只有通过初始化变量才能解决这个问题吗?如果不需要初始值,我通常会尝试不初始化变量,因为我觉得它很混乱(稍后尝试理解我在哪里/为什么使用该默认值)。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Alastair Pitts    14 年前

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

    原因是编译器正在使用变量构造查询。即使查询不会被执行,编译器也要求在使用之前分配变量,并且编译器认为构建查询表达式是在使用。

    我的建议是在其中添加一些名义默认值/临时值。

        2
  •  3
  •   Vishal    14 年前

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

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

        3
  •  0
  •   Mark Byers    14 年前