LINQ/Lambda 相当于 SQL

发布于 2024-12-12 09:11:43 字数 358 浏览 0 评论 0原文

我有一个 IEnumerable,其中包含带有 id 的对象列表。我想选择 ID 为 1、2、7、8、9、10 和 11 的对象。我不知道等效 SQL 语句的 LINQ/Lambda 等效项 (select * where id in (1, 2, 7、8、9、10、11))。

我尝试过类似的操作:

var movieratings = new int[] {1, 2, 7, 8, 9, 10, 11};
list.ratings= list.ratings.Select(x => movieratings.Contains(x.Value));

但这给了我一个编译错误,比如说无法从使用中推断出类型参数。

I have an IEnumerable that has a list of objects with ids. I want to select those objects whose IDs are 1, 2, 7, 8, 9, 10, and 11. I don't know the LINQ/Lambda equivalent of the equivalent SQL statement (select * where id in (1, 2, 7, 8, 9, 10, 11)).

I tried something like:

var movieratings = new int[] {1, 2, 7, 8, 9, 10, 11};
list.ratings= list.ratings.Select(x => movieratings.Contains(x.Value));

But that gives me a compile error like saying the type arguments cannot be inferred from usage.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

明月夜 2024-12-19 09:11:48

如果要过滤,则需要在 where 子句而不是 select 子句中执行此操作

var movieratings = new int[] {1, 2, 7, 8, 9, 10, 11};
list.ratings = list.ratings.Where(x => movieratings.Contains(x.Value));

If you are filtering you need to do that in the where clause not the select clause

var movieratings = new int[] {1, 2, 7, 8, 9, 10, 11};
list.ratings = list.ratings.Where(x => movieratings.Contains(x.Value));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文