使用linq从另一个类填充一个类
本文关键字:一个 填充 linq 另一个 使用 | 更新日期: 2023-09-27 18:00:55
我正在处理一个MVC5应用程序。
我在应用程序中遇到了一种情况,我必须从列表中找到不同的元素,但需要进行一些调整。
让我来解释一下这个场景。
我有一个产品和类别类别:-
**Product**
ProductId
ProducName
CategoryId
CategoryName
**Category**
CategoryId
CategoryName
我有多个产品,所以我正在处理一个产品列表:-
List<Product> listProducts = new List<Product>();
所有产品可以在同一类别中,也可以在多个类别中。所以我想得到类别类中所有不同类别的列表。
要找到不同的类别,我们可以使用linq如下:-
var listProductCategories=listProducts。选择(x=>x.CategoryName(.Dispinct((.ToList((;
但这将返回一个List,我想要同时具有CategoryId和CategoryName的List。
请帮我处理这个
您可以按CategoryId
和CategoryName
分组,然后投影到一个新的Category
项,如:
var query = listProducts.GroupBy(r => new { r.CategoryId, r.CategoryName })
.Select(grp => new Category
{
CategoryId = grp.Key.CategoryId,
CategoryName = grp.Key.CategoryName
});
如果您想获得List<Category>
,可以在查询末尾添加ToList
以下是基于您的问题的查询
如果列表中有相似的记录,则此查询将返回不同的记录。
List<Product> listProducts1 = new List<Product>();
var productNames = listProducts.Select(prod => new { CategoryId = prod.CategoryId, CategoryName = prod.CategoryName }).Distinct();
//This query would returns distict records based on the Category class data.
Category cat=new Category();
var productNames2 = listProducts.Where(prod => prod.CategoryId == cat.CategoryId).Select(prod => new { CategoryId = prod.CategoryId, CategoryName = prod.CategoryName }).Distinct();