LINQ与OR搜索的关系是多少? [英] How LINQ many to many with OR search?

查看:81
本文介绍了LINQ与OR搜索的关系是多少?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我具有以下表格结构:

表用户

ID  | Name
1   | John
2   | Ted
3   | Alice
4   | Barney

和表UserLanguages

and table UserLanguages

ID  | UserID | Language
1   | 1      | 1
2   | 1      | 5
3   | 2      | 2
4   | 2      | 3
5   | 3      | 3
6   | 4      | 4
7   | 4      | 5

我检查了语言 2,3 4 ,我想吸引用户:2,3,4. 我想让用户至少拥有某种选择的语言(或2或3或4) 如何使用LINQ?

I check languages 2,3 and 4 and I want to get users: 2,3,4. I want to get users who have at least something of chosen languages (or 2 or 3 or 4) How get with LINQ?

推荐答案

类似的方法应该起作用:

Something like this should work:

var query = from u in db.Users
            join l in db.UserLanguages on u.ID equals l.UserID
            group l.Language by u into langs
            where langs.Any(l => l == 2 || l == 3 || l == 4)
            select langs.Key;


我对使用谓词构建器的建议过于复杂. IEnumerable<T>.Contains()显然适用于LINQ-to-SQL(我不知道).这应该容易得多.


My suggestion of using predicate builder is overly complicated. IEnumerable<T>.Contains() apparently works in LINQ-to-SQL (which I didn't know). This should be much easier.

var languages = new[] { 2, 3, 4 };
var query = from u in db.Users
            join l in db.UserLanguages on u.ID equals l.UserID
            group l.Language by u into langs
            where langs.Any(l => languages.Contains(l))
            select langs.Key;

这篇关于LINQ与OR搜索的关系是多少?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆