加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:51:34 所属栏目:百科 来源:网络整理
导读:我之前使用Stored Procs进行了大量的开发来进行所有数据修改. 但我现在需要使用LINQ To SQL,而基本的基本任务让我感到难过. 我有一个名为Book(Title,Author等)的课程.实例化并添加了许多书籍 public ObservableCollection Books 到目前为止一切顺利,我可以看
我之前使用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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读