gpt4 book ai didi

Linq 包含和区别

转载 作者:行者123 更新时间:2023-12-04 23:58:42 29 4
gpt4 key购买 nike

我有以下 3 个表及其字段

书籍(Id_Book | 标题 | 年份)
Book_Themes(Id | Id_Book| Id_Theme)
主题(Id_Theme|标题)

我还有一个带有 Id_Themes 的 Giud 数组

Guid [] themesArray = new Guid []{new Guid("6236c491-b4ae-4a2f-819e-06a38bf2cf41"), new Guid("06586887-7e3f-4f0a-bb17-40c86bfa76ce")};

我正在尝试从 themesArray

中获取包含任何 Theme_Ids 的所有 Books

这是我目前所拥有的,但无法正常工作。不确定如何在此场景中使用 Contains。

int index = 1; int size= 10;
var books = (from book in DB.Books
join bookWThemes in DB.Book_Themes
on book.Id_Book equals bookWThemes.Id_Book

where themesArray.Contains(bookWThemes.Id_Theme)
orderby book.Year
select book)
.Skip((index - 1) * page)
.Take(size);

我在 themesArray.Contains(bookWThemes.Id_Theme) 上遇到错误:System.Guid[] 不包含 Contains 的定义。另外我不确定把 Distinct 放在哪里

****更新****

注意到我的模型的 Id_Theme 可以为 null...我更改了数据库,但没有在我的模型上反射(reflect)这些更改。因此,要回答它是否可为 null 的问题,只需将 Contains 行更改为 themesArray.Contains(bookWThemes.Id_Theme.Value)... 并且通过此更改它可以工作。

感谢所有的帮助!

最佳答案

奇怪的是,您的 LINQ 查询在 .Contains 上崩溃了。 IEnumerable<> 和 List<> 这三种形式都适合我。

    [Test]
public void Test43()
{
var a = new List<Guid>(){new Guid(),new Guid(),new Guid()};
a.Contains(new Guid()); // works okay
var b = (IEnumerable<Guid>)a;
b.Contains<Guid>(new Guid()); // works okay
b.Contains(new Guid()); // works okay
}

关于Linq 包含和区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6990921/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com