2013-06-05 54 views
-1

我不知道linq AT ALL。做所有後端工作的人已經停留了2周,但我需要做的是根據「term」過濾getItemList。我試圖尋找如何添加「where」子句,但我只是沒有運氣。將「Where」添加到linq語句中?

請注意,我在getItemList參數中添加了「字符串項」。

請幫忙。

public IndexedItem getItem(string name) { 
    var repo = new Project.SQLServerDataManager.IndexItemRepository(ConfigurationManager.ConnectionStrings["ItemRepositoryConnstring"].ConnectionString); 
    return repo.getItem(name); 
} 

public object getItemList(string term) { 
    var repo = getRepo(); 
    return from i in repo.getItem() 
     select new { name = i.name, itemType = i.itemType.name }; 
} 

private IIndexedItemReadOnlyRepository getRepo() { 
    return new Project.SQLServerDataManager.IndexItemRepository(ConfigurationManager.ConnectionStrings["ItemRepositoryConnstring"].ConnectionString); 
} 

編輯澄清: 「術語」 是搜索詞。它需要匹配項目「名稱」

+1

HTTP: //code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b是一個非常好的地方,您可以查看各種LINQ查詢的簡單示例。 – SamiHuutoniemi

+0

感謝您的入門... –

回答

5

這是你在找什麼?

public object getItemList(string term) { 
    var repo = getRepo(); 
    return from i in repo.getItem() 
      where i.Name == term 
      select new { name = i.name, itemType = i.itemType.name }; 
} 
+0

更改在哪裏「哪裏i.name.Contains(term)」,它的效果很好。謝謝! –

+0

@ScottBeeson如果您想快速參考關於如何使用linq的示例,您應該查看SamiHuutoniemi發佈的鏈接。 – Jerry

0

嘗試:

public object getItemList(string term) { 
    var repo = getRepo(); 
    return from i in repo.getItem() 
      where i.Term = "Your Term" 
      select new { name = i.name, itemType = i.itemType.name }; 
} 
0

你可以用 「其中」 兩種方式進行過濾:

將其添加到您的代碼中:

return from i in repo.getItem() 
     where i.Name == "Test Value" 
     select new { name = i.name, itemType = i.itemType.name }; 

或者:

return repo.getItem().Where(item => item.Name == "Test Value").Select(item => new { name = i.name, itemType = i.itemType.name }); 

我不知道我在哪裏找到它,但我有這個書籤標記LINQ參考,它解釋了LINQ,以及如何的基本使用功能:http://www.dotnetperls.com/linq