Linq To对象返回0值

时间:2018-03-27 12:38:50

标签: c# linq-to-objects

我正在尝试使用Linq从列表中获取一些数据。如果我使用equals使用每个列表中的一个字段来确定并且按预期返回记录数,但是如果我尝试在字段对上使用连接则返回0记录。为什么呢?

List<Result> inner_join = 
    (from egais in rests_egais
    //join best in rests_best on egais.Product.AlcCode equals best.Product.AlcCode
    join best in rests_best 
    on new {key1 = egais.Shop, key2 = egais.Product.AlcCode} 
    equals new { key1 = best.Shop, key2 = best.Product.AlcCode }
    where egais.Quantity != best.Quantity
    select new Result
    {
       Shop = egais.Shop,
       AlcCode = egais.Product.AlcCode,
       FullName = egais.Product.FullName,
       Quantity_Egais = egais.Quantity,
       Quantity_Best = best.Quantity,
       Difference = best.Quantity - egais.Quantity
    }).ToList();

EDITED:这些是要使用的类:

public class Rest
{
    public Rest()
    {
        Product = new Product();
    }
    public string Shop { get; set; }
    public DateTime Date { get; set; }
    public double Quantity { get; set; }
    public string InformF1RegId { get; set; }
    public string InformF2RegId { get; set; }
    public Product Product { get; set; }
}
public class Product
{
    public Product()
    {
        Producer = new Producer();
    }
    public string FullName { get; set; }
    public string AlcCode { get; set; }
    public double Capacity { get; set; }
    public string UnitType { get; set; }
    public double AlcVolume { get; set; }
    public int ProductVCode { get; set; }
    public Producer Producer { get; set; }
}
public class Producer
{
    public string ClientRegId { get; set; }
    public string FullName { get; set; }
    public string ShortName { get; set; }
    public int Country { get; set; }
    public string Description { get; set; }
}
public class Result
{
    public string Shop { get; set; }
    public string AlcCode { get; set; }
    public string FullName { get; set; }
    public double Quantity_Egais { get; set; }
    public double Quantity_Best { get; set; }
    public double Difference { get; set; }
}

0 个答案:

没有答案