为什么我不能在这个实例中使用var?

Dre*_*rew 1 c# linq asp.net

我使用下面的代码,由于某种原因我不能使用var来声明我的变量.我是asp/c#的新手,所以请放轻松我.我环顾四周,找不到正确的方法:

var brandslist = from brand in brandDB.brands
                         join brand_family in brandDB.brand_family on brand.brand_family_id equals brand_family.bf_id
                         orderby brand_family.brand_family_name
                         orderby brand.priority
                         orderby brand.genre_id
                         select brand_family.brand_family_name, priority, roll_image;
Run Code Online (Sandbox Code Playgroud)

感谢任何能告诉我正确方法的人.

Jon*_*eet 7

如果它是局部变量并且查询本身有效,那么您将能够.

但是,查询表达式无效.只看最后一行,这个:

select brand_family.brand_family_name, priority, roll_image;
Run Code Online (Sandbox Code Playgroud)

应该是:

select new { brand_family.brand_family_name,
             brand.priority,
             brand.roll_image };
Run Code Online (Sandbox Code Playgroud)

值得仔细研究编译器错误 - 它通常可以很好地解释错误.

接下来,您的订购几乎肯定是错的 - 我非常怀疑这是否符合您的要求.要表达多个排序,通常只需列出它们,用逗号分隔,如下所示:

var brandslist = from brand in brandDB.brands
                 join brand_family in brandDB.brand_family
                   on brand.brand_family_id equals brand_family.bf_id
                 orderby brand_family.brand_family_name,
                         brand.priority,
                         brand.order_id
                 select new { brand_family.brand_family_name,
                              brand.priority,
                              brand.roll_image };
Run Code Online (Sandbox Code Playgroud)

这将转换为OrderBy后续ThenBy调用的调用 - 将其brand_family_name视为主要排序顺序,将其他调用视为次要排序.