林克加入团体

本文关键字:林克 | 更新日期: 2023-09-27 18:28:10

Hej,我有一个linq表达式的问题。我想和某一组的人一起表演join。这正是我所需要的:

var f = new IEnumerable<SomeClass> { ... };
var rows = new IEnumerable<SomeOtherClass> { ... };
var makedGroups = rows.GroupBy(row => row.SomeId);
var groupsJoined = (from row in makedGroups
    join allocQuant in f on row.Key.Value equals allocQuant.SomeId into gj
    select gr => new { Count = gr.Count(), Group = gj });

错误为:错误202联接子句中某个表达式的类型不正确。对"Join"的调用中的类型推断失败。

如何正确地写出这个表达式?

林克加入团体

我已经包含了一些示例代码,它正在做你想要做的事情。它根据一些示例代码改编,使用两个类,而不是静态的字符串数组。

结果将产生一个IEnumerable With a ProductCategory Field,Products Field包含基于类别的产品分组,最后一列是分组中的计数。

根据你的要求,这就是我认为你想要的。

class Product
{
    public Product(string cat, string name)
    {
        Category = cat;
        ProductName = name;
    }
    public string Category { get; set;}
    public string ProductName { get;set;}
}

class ProductClass
{
    public ProductClass (string type)
    {
        ProductType = type;
    }   
    public string ProductType { get;set;}
}
ProductClass[] productClasses = new ProductClass[]{  
    new ProductClass("Beverages"),   
    new ProductClass("Condiments"),   
    new ProductClass("Vegetables"),   
    new ProductClass("Dairy Products"),   
    new ProductClass("Seafood") };  
List<Product> products = new List<Product>();
products.Add(new Product("Seafood", "crab sticks"));
products.Add(new Product("Seafood", "lobster"));
products.Add(new Product("Vegetables", "cucumber"));
products.Add(new Product("Seafood", "oysters"));
products.Add(new Product("Condiments", "pepper"));
products.Add(new Product("Condiments", "salt"));
var query =
    from pc in productClasses
    join product in products on pc.ProductType equals product.Category into gj
    select new { ProductCategory= pc.ProductType, Products = gj, Count = gj.Count() };