在LINQ语句中转换为类型

boo*_*ean 0 .net linq

我在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();
Run Code Online (Sandbox Code Playgroud)

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

(注意:上面的代码返回一个错误,但是现在这很好.我可以使用"var books"并且它可以正常工作,但是我把它留下来显示我想要的样子).

干杯:)

Bro*_*ass 6

你几乎就在那里 - 现在你正在投射到一个匿名类型(使用new {}) - 投射到类实例而不是你需要指定类名,所以假设你的 Book类有公共属性,Title并且Author:

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

编辑:您的示例使用的是类型Books- 我假设保存单个图书属性的类名为Book(singular).