【问题标题】:Casting to a type while in LINQ statement在 LINQ 语句中转换为类型
【发布时间】:2011-04-28 16:21:52
【问题描述】:

我在 ASP.NET 4.0 中有以下 LINQ。我正在通过 XML 文件读取数据并尝试将结果过滤到强类型对象中。

    List<Books> books = (from q in _XmlConnection.Descendants("BookShelf")
                                    select new
                                    {
                                        Title = q.Element("title").Value,
                                        Author = q.Element("autor").Value
                                    }).ToList();

现在我可以做的是在这个语句之后运行一个 foreach 并创建一个新的 Books 对象,该对象分配给一个列表。不过,我想做的是在 LINQ 语句中包含所有内容,这样当我为 Title 或 Author 定义值时,它会立即将其分配给 List。这样我就可以直接跳到“还书”了。有没有办法做到这一点?

(注意:上面的代码返回一个错误,但现在这很好。我可以使用“var books”并且它工作正常,但我将其保留为这样以显示我希望它看起来像什么)。

干杯:)

【问题讨论】:

    标签: .net linq


    【解决方案1】:

    您几乎就在那里 - 现在您正在投影到匿名类型(使用 new {} ) - 投影到类实例而不是您需要指定类名,因此假设您的 Book 类具有公共属性 @ 987654323@和Author

    List<Book> books = (from q in _XmlConnection.Descendants("BookShelf")
                                    select new Book()
                                    {
                                        Title = q.Element("title").Value,
                                        Author = q.Element("autor").Value
                                    }).ToList();
    

    编辑:您的示例使用了 Books 类型 - 我假设保存单本书属性的类名为 Book(单数)。

    【讨论】:

    • 这是有道理的,现在工作正常。我至少希望这会是一些棘手的事情,所以不会因为被卡住而感到难过;)
    【解决方案2】:
    List<Books> books = (from q in _XmlConnection.Descendants("BookShelf")
                                    select new Book()
                                    {
                                        Title = q.Element("title").Value,
                                        Author = q.Element("autor").Value
                                    }).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-29
      • 2013-02-15
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      相关资源
      最近更新 更多