2013-08-20 65 views
1

我们有以下产品分类。如何查找多个属性的最大值

public string Product{ get; set; }  
public int? Monday { get; set; } 
public int? Tuesday { get; set; } 
public int? Wednesday { get; set; } 
public int? Thursday { get; set; } 
public int? Friday { get; set; } 
public int? Saturday { get; set; } 
public int? Sunday { get; set; } 
public string Zip { get; set; } 

该属性保存一周当天的销售值。我们需要能够搜索产品列表,并根据产品的最佳销售日选择所有产品的总销售额。例如:在下面的示例中,产品1的周一销售额最高,Product2周日的销售额最高,因此总计应该合并2(5378)。

Product Zip  City  State Sunday Monday Tuesday Wednesday Thursday Friday 

Product 1 63103 Saint Louis MO  0  4728 0  1522  0  0 

Product 2 63103 Saint Louis MO  650  419  417  428  599  559 

这是我到目前为止的LINQ代码。

var temp = report.SelectMany(p => p.SnapshotRecords) 
           .Where(record => record.Zip == "63103") 
           .GroupBy(g => new 
            { 
             g.Zip, 
             g.ProductID 
            }) 
           .Select(s => new SnapshotData() 
            { 
             Monday = s.Sum(g => g.Monday), 
             Tuesday = s.Sum(g => g.Tuesday), 
             Wednesday = s.Sum(g => g.Wednesday), 
             Thursday = s.Sum(g => g.Thursday), 
             Friday = s.Sum(g => g.Friday), 
             Saturday = s.Sum(g => g.Saturday), 
             Sunday = s.Sum(g => g.Sunday), 
            }); 
+1

为什么不使您的生活更轻松,有一个'INT [7]'或者甚至一个枚举? – Sayse

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

这真的应该是一个字典''或'' – xbonez

回答

2

建立从销售值的数组,并得到最大的该产品:

int? total = report.SelectMany(p => p.SnapshotRecords) 
    .Where(record => record.Zip == "63103") 
    .GroupBy(g => new 
    { 
     g.Zip, 
     g.ProductID 
    }) 
    .Sum(s => new int?[] 
    { 
     s.Sum(g => g.Monday), 
     s.Sum(g => g.Tuesday), 
     s.Sum(g => g.Wednesday), 
     s.Sum(g => g.Thursday), 
     s.Sum(g => g.Friday), 
     s.Sum(g => g.Saturday), 
     s.Sum(g => g.Sunday) 
    }.Max() 
); 
+0

@Save:当然可以。感谢您的发现。 – Guffa

+0

工程就像一个魅力。我只需要将“int total”改为“int?total”,使其可以为空。谢谢。 – jslumar

+0

@jslumar:对,当然结果也是可以的。 – Guffa