2011-04-28 65 views
0

我在ASP.NET 4.0中有以下LINQ。我正在通过XML文件读取数据,并试图将结果过滤为强类型对象。在LINQ声明中铸造到一个类型

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 < Books。这样我就可以直接跳到“归还书籍”。有没有办法做到这一点? (注意:上面的代码返回一个错误,但是现在这没什么问题,我可以使用“var books”,它可以正常工作,但是我将它留下来,以表明我希望它看起来像什么) 。

干杯:)

回答

6

你几乎没有 - 现在你都投射到一个匿名类型(使用new {}) - 投射到一个类实例,而不是你需要指定的类名,所以假设你Book类具有公共属性TitleAuthor

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

编辑:你举的例子是使用类型Books - 我认为虽然这是持有一本书的性质类名为(唱ular)。

+0

这是有道理的,它现在工作正常。我至少希望这会是棘手的事情,所以不会因为被卡住而感觉不好;) – boolean 2011-04-28 16:46:06

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

就是这样!?哦,我是一个傻瓜XD谢谢Andrey – boolean 2011-04-28 16:43:39