这是场景:
我有一张桌子,让我们说Users
。每个用户都有以下列:ID
和TypeID
。
我有一个逗号分隔的字符串,用户为ID
个数字"1,2,3,4,5"
。
我想知道,我如何实现 - 通过linq2sql - 如果我基于该字符串,检查用户是否具有相同的TypeID
值?
答案 0 :(得分:3)
将该列表分解为值集合,并使用该集合使用TypeID
检查Contains()
是否在其中。
var numbers = "1,2,3,4,5";
var typeIds = numbers.Split(',')
.Select(n => Convert.ToInt32(n))
.ToList();
var query =
from user in db.Users
where typeIds.Contains(user.TypeID)
select user;
答案 1 :(得分:0)
也许我没有理解你的问题,因为你已经接受了杰夫的答案,或者你可能没有理解他的答案,因为它没有做到我的意思以为你想要。我的理解是你的字符串是一个ID列表,你想知道具有这些ID的用户是否都具有相同的TypeID。这是一种方法(使用LinqToObject测试,但应该在LinqToSQL中很好地翻译)
bool sameTypeID = (from user in users
where str.Split(',').Select(x => int.Parse(x)).Contains(user.ID)
group user.ID by user.TypeID into g
select g).Count() == 1;