我有一个List<Product>
包含自行车的属性(Name
,ProductName
,Color
,List
Price
)。我正在努力弄清楚如何使用LINQ编写搜索功能。我想找一个Bike
的名字。任何建议都会对我有所帮助。
答案 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包
这将启用以下(及更多),这将返回搜索字词出现在指定属性的任何中的结果
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();