微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 尝试获取集合中的第一个项目返回NULL

我之前使用Stored Procs进行了大量的开发来进行所有数据修改.

但我现在需要使用LINQ To sql,而基本的基本任务让我感到难过.

我有一个名为Book(Title,Author等)的课程.实例化并添加了许多书籍
public ObservableCollection Books

到目前为止一切顺利,我可以看到它在其藏品中保存了有效的书籍.

我有一个函数DeleteOldestBook(),它只是获取书籍中的第一本书,并删除.这是我遇到麻烦的地方.

我尝试选择

Book BookToDelete = Books.Take(1) as Book;

但它总是返回NULL.

我做了一个hacky解决方法

var AllBooks = from BookToDelete in Books select BookToDelete;
foreach (Book BookToDelete in AllBooks)
{ 
    //  BookToDelete.dostuff takes place ... 
    break; // only do 1
}

但这太糟糕了,我知道我错过了一些简单的东西.

LINQ专家的任何想法?如果您需要更多代码,请告诉我们.

提前致谢

解决方法

Take将返回一个包含n个元素的集合.您仍然需要迭代该集合.在您的情况下,集合大小为1.

First将返回集合中的第一个项目.

额外信用

如果您的集合尚未排序,请使用OrderBy

Book bookToDelete = Books.OrderBy(b => b.someDate).First();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐