0

LINQを使用して、次のようなt-sqlステートメントと同等の処理を行う必要があります。

SELECT * FROM mytable WHERE idnumber IN('1', '2', '3')

したがって、LINQでは次のようになります。

Dim _Values as String = "1, 2, 3"
Dim _Query = (From m In mytable Where idnumber = _Values Select m).ToList()

idnumberに文字列内の各値を評価させるために_Valuesをどう処理するかわからない。
前もって感謝します。

4

2 に答える 2

3

Inner Join私はこの文脈で行きます。もし私が使っContainsていたら、それはIterate unnecessarily6回でしょうdespite of the fact that there is just one match

C#バージョン

var desiredNames = new[] { "Pankaj", "Garg" }; 

var people = new[]  
{  
    new { FirstName="Pankaj", Surname="Garg" },  
    new { FirstName="Marc", Surname="Gravell" },  
    new { FirstName="Jeff", Surname="Atwood" }  
}; 

var records = (from p in people 
               join filtered in desiredNames on p.FirstName equals filtered  
               select p.FirstName
              ).ToList();

VB.Netバージョン

Dim desiredNames = New () {"Pankaj", "Garg"}

Dim people = New () {New With { _
    .FirstName = "Pankaj", _
    .Surname = "Garg" _
}, New With { _
    .FirstName = "Marc", _
    .Surname = "Gravell" _
}, New With { _
    .FirstName = "Jeff", _
    .Surname = "Atwood" _
}}

Dim records = ( _
    Join filtered In desiredNames On p.FirstName = filtered).ToList()

含むのデメリット

2つのリストオブジェクトがあるとします。

List 1      List 2
  1           12
  2            7
  3            8
  4           98
  5            9
  6           10
  7            6

含むを使用して、リスト2の各リスト1アイテムを検索します。これは、反復が49回発生することを意味します。

于 2012-04-13T15:49:19.307 に答える
1
Dim _Values as String = "1, 2, 3"
Dim _Query = (From m In mytable Where _Values.Split(", ").Contains(m.idnumber) Select m).ToList()
于 2012-04-13T15:45:23.243 に答える