LINQ搜索产品索引

时间:2014-02-18 10:17:16

标签: linq asp.net-mvc-4 search-engine

我有一个List<Product>包含自行车的属性(NameProductNameColorList Price)。我正在努力弄清楚如何使用LINQ编写搜索功能。我想找一个Bike的名字。任何建议都会对我有所帮助。

3 个答案:

答案 0 :(得分:1)

我假设你有以下Product课程:

public class Product
{
    public String Name { get; set; }
    public String ProductName { get; set; }
    public String Color { get; set; }
    public String List { get; set; }
    public String Price { get; set; }
}

您还提到您的数据位于List<Product>。我将为它提供一个演示名称:

List<Product> myProductList = GetProductList();
// Where GetProductList() will create a new List<Product> and populate it.

String bikeNameFilter = GetNameFilter();
// You can chnage this by the string you want for filtering.

您可以使用以下内容获取数据:

List<Product> myFilteredProductList = (from p in myProductList
                                       where p.Name = bikeNameFilter
                                       select p;
                                      ).ToList()

显然,您可以将要使用的过滤器更改为产品的其他属性。最后要获得实际名称,您可以遍历刚刚获得的列表:

foreach (var p in myFilteredProductList)
{
    Console.WriteLine(p.ProductName);
    // Use this value wherever you want.
}

答案 1 :(得分:1)

看看我创建的nuget包

http://www.nuget.org/packages/NinjaNye.SearchExtensions

这将启用以下(及更多),这将返回搜索字词出现在指定属性的任何中的结果

var result = products.Search("searchTerm", p => p.Name, p => p.ProductName);

对所有string属性执行搜索可以按如下方式进行:

var result = products.Search("searchTerm");

或者,您可以执行AND搜索,其中搜索字词存在于一组属性中,如下所示:

string searchTerm = "searchTerm";
var result = products.Search(searchTerm, p => p.Name) 
                     .Search(searchTerm, p => p.ProductName);

有关详细信息,请查看 projects GitHub page blog posts


更新:不要忘记using指令......

using NinjaNye.SearchExtensions

答案 2 :(得分:1)

想象一下,你的名字取自名为nameToSearch的变量。

如果你想获得产品,那就是这样。

string nameToSearch = "BikeName";
List<Product> list = bikes.Where(x => x.Name == nameToSearch).ToList();