C# 林克,有名单吗
我有一张这样的桌子:C# 林克,有名单吗,c#,linq,C#,Linq,我有一张这样的桌子: UserID | FruitID 4 | 34 4 | 4355 4 | 652 5 | 5677 5 | 562 4 | 562 var IsAuthorized = MyDC.FruitTable .Any(f => f.UserID == TheUserID &&
UserID | FruitID
4 | 34
4 | 4355
4 | 652
5 | 5677
5 | 562
4 | 562
var IsAuthorized = MyDC.FruitTable
.Any(f => f.UserID == TheUserID &&
f.FruitID == TheFruitID);
现在,我要传递一个UserID和一个水果id,如下所示:
UserID | FruitID
4 | 34
4 | 4355
4 | 652
5 | 5677
5 | 562
4 | 562
var IsAuthorized = MyDC.FruitTable
.Any(f => f.UserID == TheUserID &&
f.FruitID == TheFruitID);
这将返回一个布尔值。现在,我想为一个水果ID列表写同样的东西:我传入一个用户ID和几个水果ID,我想要一个布尔值,表示“所有水果ID都有一个UserID==到TheUserID”
请注意,如果列表仅包含一个不匹配的元素
FruitID==f.FruitID&&f.UserID==UserID那么返回应该是
整个列表为false
如何重写查询以获取一系列的水果ID?使用listVariable.Contains(…)
撇开示例代码无法编译这一事实不谈,我怀疑您想要的是:
// Here fruitIDs is a List<int> for the "target" fruit IDs
var isAuthorized = MyDC.FruitTable
.Where(u => fruitIDs.Contains(u.FruitID))
.All(u => u.UserID == TheUserID);
//这里的水果ID是“目标”水果ID的列表
var isAuthorized=MyDC.fructable
.其中(u=>FROUTIDS.Contains(u.FROUTIID))
.All(u=>u.UserID==TheUserID);
这将检查给定列表中的每个条目是否与指定的用户ID匹配。当然,还有其他写入方法
它不会检查原始集合中的每个条目是否都有有效的fruit ID。问题不清楚这是否是目标…谢谢:是的,目标是检查fruit ID参数列表中的每个条目是否都有相应的用户ID。@frenchie:这不是你在问题中写的。。。基本上很难理解你到底想要什么。如果您提供示例输入和预期输出,将使理解变得相当简单。请注意,如果一个列表只包含一个与FruitID==UserID不匹配的元素,那么整个列表的返回值应该为false“我认为这已经足够描述了;如果不清楚,我道歉。@frenchie:但FruitID不会在任何方面与UserID匹配;我希望您将实际数据中的一个水果ID与输入数据中的一个水果ID进行匹配,然后将相应的用户ID与单个目标用户ID进行匹配。您的问题仍然不清楚。您在多个地方使用的“FruitID==UserID”表达式真的没有帮助;无果ID和用户ID不必匹配;只要每个记录都有f.FruitID==“列表中的一个FruitID”&&f.UserID==TheUserID。