使用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。

请帮我处理这个

使用linq从另一个类填充一个类

您可以按CategoryIdCategoryName分组,然后投影到一个新的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();