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

标签 c# asp.net linq

我正在使用下面的代码,由于某种原因,我无法使用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;


感谢任何可以告诉我进行这项工作的正确方法的人。

最佳答案

如果它是一个局部变量,并且查询本身是有效的,则可以。

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

select brand_family.brand_family_name, priority, roll_image;


应该可能是:

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


值得仔细研究一下编译器错误-它通常会给出关于错误的合理解释。

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

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


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

关于c# - 为什么在这种情况下不能使用var?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640773/

相关文章:

c# - 当前上下文中不存在名称 'Html'

asp.net - Crystal Report Viewer - 以编程方式限制文件格式选项

c# - 如何在 C# 中从 payfort Apis 获取 json 结果

Linq 通过比较选择不同的值

c# - 有没有办法分解 Expression<Func<T, Bool>> 并获得相等比较的右侧?

c# - 如何在 C# 中仅读取像素数据而不是 16 位图像的元数据?

c# - 以下语句中的 `this` 和 `base` 有什么区别?

c# - 如何从对象中仅获取 1 行

mysql - 使用 Entity Framework 更新表时出现错误 :"Cannot update identity column..."

c# - 从列表中删除多余的项目时,枚举器陷入无限循环