简体   繁体   English

为什么在这种情况下不能使用var?

[英]Why can't I use var in this instance?

I am using the code below and for some reason I can't use var to declare my variable. 我正在使用下面的代码,由于某种原因,我无法使用var声明我的变量。 I am brand new to asp/c# so please go easy on me. 我是ASP / C#的新手,所以请放轻松。 I've had a look around and I can't find the correct way of doing this: 我环顾四周,但找不到正确的方法:

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;

Thanks to anyone who can tell me the correct method of making this work. 感谢任何可以告诉我进行这项工作的正确方法的人。

If it's a local variable and the query itself were valid, you would be able to. 如果它是一个局部变量,并且查询本身是有效的,则可以。

However, the query expression is invalid. 但是,查询表达式无效。 Just looking at the last line, this: 只看最后一行,这是:

select brand_family.brand_family_name, priority, roll_image;

should probably be: 应该可能是:

select new { brand_family.brand_family_name,
             brand.priority,
             brand.roll_image };

It's worth looking closely at the compiler error - it generally gives a reasonably good explanation of what's wrong. 值得仔细研究一下编译器错误-它通常会给出关于错误原因的合理解释。

Next up, your ordering is almost certainly wrong - I very much doubt that this does what you want it to. 接下来,您的订购几乎肯定是错误的-我非常怀疑这是否符合您的要求。 To express multiple orderings, you typically just list them, separated by commas, like this: 要表达多个顺序,通常只需列出它们,并用逗号分隔,如下所示:

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 };

This will translate to an OrderBy call followed by subsequent ThenBy calls - treating brand_family_name as the primary sort ordering, and the others as secondary orderings. 这将转换为OrderBy调用,然后再进行随后的ThenBy调用-将brand_family_name视为主要排序顺序,将其他视为次要排序。

Fixed :D 固定的:D

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.genre_id
                 select new {brand_family.brand_family_name, brand.priority, brand.roll_image};

var exposes the enumerator, which supports a simple iteration over a collection of a specified type. var公开了枚举器,该枚举器支持对指定类型的集合进行简单的迭代。 In your select brand_family.brand_family_name, priority, roll_image; 在您选择的brand_family.brand_family_name中,优先级为roll_image; you are returning multiple items. 您将退回多个物品。

Not sure if it will fix it but try this: 不知道是否会解决此问题,请尝试以下操作:

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 new { brand_family.brand_family_name, priority, roll_image } );

You should also fix your orderby or else you are just reordering 您还应该修改订单顺序,否则您只是在重新排序

orderby brand_family.brand_family_name
orderby brand.priority
orderby brand.genre_id

Should become 应该成为

orderby brand_family.brand_family_name, brand.priority, brand.genre_id

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM