LinQ 的显式问题

Posted

技术标签:

【中文标题】LinQ 的显式问题【英文标题】:Explicit problem with LinQ 【发布时间】:2011-02-02 21:14:51 【问题描述】:

this previous question:的后续行动

当前代码:

var query = from b in books
             select new
             
                 Title = b.Title,
                 StockAvailable = bookexamples.Count(be => 
                         be.BookID == b.BookID && 
                         be.OrderDetailID == null
                     )
             ;

目标: 将 query 替换为应包含来自 LINQ 查询的强类型数据的 IEnumerable<test>

public class test

    public string Title  get; set; 
    public List<int> StockAvailable  get; set; 

问题: 收到错误消息:

错误 1 ​​无法隐式转换类型 'System.Collections.Generic.IEnumerable&lt;AnonymousType#1&gt;''System.Collections.Generic.IEnumerable&lt;BokButik1.Models.test&gt;'。 存在显式转换(您是 缺少演员表?)

问题: 我该如何解决这个问题?

// 全金属男孩

【问题讨论】:

编辑澄清我认为你想问什么。 【参考方案1】:

您需要修改查询以返回test 对象(目前,它正在返回异常对象)。

var query = from b in books
            select new test()
            
                Title = b.Title,
                StockAvailable = bookexamples.Count(be => 
                        be.BookID == b.BookID && 
                        be.OrderDetailID == null
                    )
            ;

您需要调整StockAvailable 以表示int,因为Count 返回一个int。

另外,请注意,C# 中的类名以大写字母开头。

【讨论】:

类名在 C# 中由 convention 而非 rule 以大写字母书写。没有什么强迫你这样做,但仍然是很好的建议。 @FullmetalBoy 和@Femaref:在原始答案中编写了代码后,鉴于您的新要求,我同意此修改。这当然是我会做的。 +1。 感谢大家的帮助!有没有一本书或一个网站我可以阅读更多关于 c# 的经验法则的信息,例如“类名在 C# 中用大写字母编写”?

以上是关于LinQ 的显式问题的主要内容,如果未能解决你的问题,请参考以下文章

我可以内联指定我的显式类型比较器吗?

为啥接口的显式实现不能公开?

ARC 禁止发送“保留”问题的显式消息

node() 的显式版本是啥

带多个参数的显式构造函数

运算符重载中的显式构造?