C# WebMatrix内部搜索引擎

C# WebMatrix内部搜索引擎,c#,webmatrix,C#,Webmatrix,我写了一个代码搜索数据库,但我不知道为什么当我搜索一些特定的关键字时,它会显示其他不相关的链接。这是代码和结果 Page.Title = "Catalog Search"; var db = Database.Open("Shopping"); var searchWords = Request["searchTerm"].Split(' '); IEnumerable<dynamic> result = Enumerable.Empty<string>(); var s

我写了一个代码搜索数据库,但我不知道为什么当我搜索一些特定的关键字时,它会显示其他不相关的链接。这是代码和结果

Page.Title = "Catalog Search";
var db = Database.Open("Shopping");
var searchWords = Request["searchTerm"].Split(' ');
IEnumerable<dynamic> result = Enumerable.Empty<string>();
var sqlSelect = "SELECT ProductId, ProductTitle FROM Products WHERE " +
"ProductTitle LIKE @0";
foreach(var word in searchWords)
{
result = result.Concat(db.Query(sqlSelect, "%" + word + "%").ToList());
}
Samsung - 15" Series 9 Ultrabook Laptop
Samsung - Galaxy Tab 2 7.0
Samsung - 32" Class - LCD
Samsung - 32" Class - LCD 
我看到了一个php代码,这正是我想要的,但不幸的是,我不知道如何转换它。下面是php代码

$searchTerms = explode(' ', $bucketsearch);
$searchTermBits = array();
foreach ($searchTerms as $term) {
    $term = trim($term);
    if (!empty($term)) {
        $searchTermBits[] = "bucketname LIKE '%$term%'";
    }
}

...

$result = mysql_query("SELECT * FROM buckets WHERE ".implode(' AND ', $searchTermBits).");
以及php搜索代码的结果

SELECT * FROM buckets WHERE bucketname LIKE '%apple%' AND bucketname LIKE '%and%' AND bucketname LIKE '%pear%'

我冒昧地添加了一些空检查之类的,但C#的代码大致如下所示:

// make sure search terms are passed in, and remove blank entries
var searchTerms = Request["searchTerms"] == null ? 
                    new string[] {} : 
                    Request["searchTerms"].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

// build the list of query items using parameterization
var searchTermBits = new List<string>();
for (var i=0; i<searchTerms.Length; i++) {
    searchTermBits.Add("bucketname LIKE @" + i);
}

// create your sql command using a join over the array
var query = "SELECT * FROM buckets";
if (searchTerms.Length > 0) {
  query += " WHERE " + string.Join(" AND ", searchTermBits);  
} 

// ask the database using a lambda to add the %
var db = Database.Open("StarterSite");
var results = db.Query(query, searchTerms.Select(x => "%" + x + "%").ToArray());

// enjoy!
Response.Write(results.Count());
//确保传入搜索词,并删除空白项
var searchTerms=Request[“searchTerms”]==null?
新字符串[]{}:
请求[“searchTerms”].Split(新字符串[]{,“},StringSplitOptions.RemoveEmptyEntries);
//使用参数化构建查询项列表
var searchTermBits=新列表();
对于(变量i=0;i 0){
query+=“WHERE”+string.Join(“AND”,searchTermBits);
} 
//使用lambda请求数据库添加%
var db=Database.Open(“StarterSite”);
var results=db.Query(查询,searchTerms.Select(x=>“%”+x+“%”).ToArray());
//享受吧!
Response.Write(results.Count());

如果你再遇到麻烦,请告诉我

谢谢你,贾斯汀。太好了