2013-08-20 51 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