2012-08-09 51 views
0

任何人都可以幫助如何使用linq(「where in in sql」)進行關聯搜索嗎?如何使用Linq在SQL中以類似的方式搜索代碼集合

LINQ的在哪裏搜索如下這裏,

1. select * from tablename where code = 'code1' 
`string[] numbers = { "one", "two", "three", "four" }; 

string searchNumber = "two"; 
var number = from number1 in numbers 
        where number1 == searchNumber 
        select number1; 

foreach (var n in number) 
    Console.WriteLine(n); 

     Console.ReadLine();` 

如何搜索集合使用LINQ代碼?

2. select * from tablename where code in ('code1','code2') 
+0

可能重複(http://stackoverflow.com/questions/959752/where-in-clause-in-linq) – 2012-08-09 12:22:07

回答

0
string[] searchNumber = {"two","one"}; 
     var number = from number1 in numbers 
        where searchNumbers.Contains(number1) 
        select number1; 

     foreach (var n in number) 
     { 
      Console.WriteLine(n); 
     } 

     Console.ReadLine(); 

這應該做的伎倆。

+0

如果輸入字符串searchNumber = 「'二三'」; – user1531248 2012-08-09 12:23:30

1

試試沿着線..

string[] codes = { "code1", "code2" }; 
var selections = tablename.Where(x => codes.Contains(x.code)); 
0

這取決於你要反對什麼。如果你使用實體框架,那麼你將需要查找創建一個In語句。如果您只是針對IEnumerable使用Linq,則包含將執行您想要的操作。

原因是,如果您對數據庫執行此操作,提供者必須實現Contains。實體框架不IIRC。

2

對於第一個答案使用本

var result = tablename.Where(x => x.code == "code1"); 

對於第二個答案使用本

List<string> str = new List<string>(){ "code1" , "code2" }; 

var result = tablename.Where(x => str.Contains(x.code)); 
0

您需要反轉你正在考慮這個問題的方法。 詢問如果numbers.contains(searchNumber)。類似:

var result = from n in numbers 
       where numbers.Contains(searchNumber) 
       select n; 
[凡在LINQ子句]的