2017-08-29 51 views
-3

條款我有這樣的:如何使用包含在在LINQ

 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.Cotains(visitCounter)).ToList(); 

如何做到這一點?

+3

爲什麼查詢你沒有工作? – Magnus

+1

'visitCounter'需要是一個'sequence',那麼你可以這樣做'(x => visitCounter.Cotains(x.Index))''。 –

+2

'x.Index'的類型是什麼? –

回答

0

您可以使用Contains這樣的:

int[] VisitorIds = new int[] {1,2,3}; //an array to check with 

    .Where(x => vivitorIds.Contains(x.Index)).ToList(); 
3

你似乎誤解了Contains方法做什麼。我在這個基礎上回答你剛纔的用法:

Where(x => x.Index == visitCounter - 1) 

換句話說,visitCounter是一個整數(因此是Index)。但你想這樣使用它:

Where(x => x.Index.Contains(visitCounter)) 

這不會使語法意義。整數(Index)沒有Contains函數。它不是完全清楚你想要達到什麼,但你的意見澄清了一點:

但我想在SQL服務器中實現類似IN子句的東西。

SQL中的IN條款要求範圍的可能性(整數列表,你的情況),你也不會在這裏整數列表工作。此外,你說它爲Index.Contains(visitCounter)這意味着你期望Index是整數列表?

這根本沒有意義。所以,我給你的是最有意義的答案,假設你是不準確與僞代碼:

List<int> visitorIds = new List<int>() { 1, 5, 99, 125 }; 

然後你就可以做到以下幾點:

.Where(x => visitorIds.Contains(x.Index)) 

要把它放在文字中,這段代碼基本上告訴計算機「只給IndexvisitorIds列表中提到的項目」。