-1

我根本不知道 linq。负责我们所有后端工作的人已经工作了 2 周,但我需要做的就是根据“术语”过滤getItemList 。我已经尝试搜索如何添加“where”子句,但我只是没有运气。

请注意,我在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);
}

编辑澄清: “术语”是搜索词。它需要匹配项目“名称”

4

4 回答 4

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 };
}
于 2013-06-05T18:54:27.467 回答
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 };
}
于 2013-06-05T18:54:13.810 回答
0

以下是 LINQ 上的两个很好的入门链接,可用于您同事未来的假期:

LINQ 查询简介 (C#)

LINQ 和 Lambda 入门

于 2013-06-05T19:01:16.010 回答
0

您可以使用“where”两种方式进行过滤:

将其添加到您的代码中:

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

于 2013-06-05T19:04:17.353 回答