我有这个:
var myResult = uow.GetRepository<SLItemsCustomersCard, long>()
.Query(x => x.CustomerId == customerId && x.SquareColor == squareColor)
.OrderBy(x => x.BranchMapRang)
.Select((r, i) => new { Row = r, Index = i })
.Where(x => x.Index == visitCounter - 1).ToList();
但我想在 where 子句中实现这一点:
.Where(x => x.Index.Contains(visitCounter)).ToList();
如何做到这一点?
您似乎误解了
Contains
方法的作用。我的答案基于您之前的用法:
Where(x => x.Index == visitCounter - 1)
换句话说,
visitCounter
是一个整数(Index
也是整数)。但你想像这样使用它:
Where(x => x.Index.Contains(visitCounter))
这没有语法意义。整数 (
Index
) 没有 Contains
函数。我并不完全清楚你想要实现什么,但你的评论更清楚地说明了这一点:
SQL 中的但我想在 SQL Server 中实现类似 IN 子句的功能。
IN
子句需要一系列可能性(在您的情况下是整数列表),并且您在这里不使用整数列表。此外,您将其表述为
Index.Contains(visitCounter)
,这意味着您期望
Index
是整数列表?这根本没有道理。因此,假设您的伪代码不准确,我会给您最有意义的答案:
List<int> visitorIds = new List<int>() { 1, 5, 99, 125 };
然后您可以执行以下操作:
.Where(x => visitorIds.Contains(x.Index))
用文字来说,这段代码基本上告诉计算机“只给出
Index
列表中提到的
visitorIds
的项目”。
Contains
,如下所示:
int[] VisitorIds = new int[] {1,2,3}; //an array to check with
.Where(x => VisitorIds.Contains(x.Index)).ToList();