2016-06-11 160 views
0
我在下面的查詢有困難

比較的結果是如何添加,如果其他人在選擇塊我也想一些更好的方式來寫下面的查詢LINQ的計算平均,總在查詢

var x = csvParser.ParseCsv(@"data.csv"); 
var unsettledCustomers = x.GroupBy(g=>g.Id). 
    Select(gg =>new 
    { 
     Id=g.Key, 
     Total=g.Sum(xx=>xx.Stake), 
     Avg=g.Average(ss=>ss.Win) 
    }); 
+1

'x.GroupBy(G => g.Id).' - 什麼是標識?您沒有將它列在您的CVS數據中。 – Igor

+0

它是csv數據中的customerId第一個值 –

+0

'bet' ='stake'?或者他們是兩個不同的東西? – Igor

回答

2
var unsettledCustomers = x.GroupBy(g => g.Id) 
    .Select(g => new 
    { 
     Id = g.Key, 
     Total = g.Sum(xx => xx.Stake), 
     Avg = g.Average(ss => ss.Win), 
     AvgerageBet = g.Average(ss => ss.Stake), 
     UnusualBets = g.Where(bet => bet.Stake > (10 * g.Average(ss => ss.Stake))).ToList() 
    }); 

var allUnusualBets = unsettledCustomers.SelectMany(y => y.UnusualBets); 

你貼出的問題:

我想找出投注,其中股份(BET)高於該客戶的平均投注在他們的BETT 10倍以上ing歷史...

您的數據在哪裏Id =客戶ID。請注意,根據您在問題中定義的內容,不存在平均賭注* 10高於下注的情況,因此樣本數據中沒有異常投注。

ID:1,AverageBet:400,AverageBetTimes10:4000,最高下注:1000

ID:2,AverageBet:15,AverageBetTimes10:150,最高下注:20

ID:3, AverageBet:110,AverageBetTimes10:1100,最高下注:300

ID:4,AverageBet:237.5,AverageBetTimes10:2375,最高下注:300

ID:5,AverageBet:73.3333333333333,AverageBetTimes10:733.333333333 333,最高下注:100

編號:6,AverageBet:162.5,AverageBetTimes10:1625,最高下注:500

+0

另外一個問題,我應該使用EventID groupby –

+0

@Santosh - 你沒有在你的問題中提及有關EventID的任何信息,所以我沒有使用它。如果這很重要,則需要使用什麼EventID更新您的問題,以及如何使用它來過濾數據。 – Igor

+0

如何從上述查詢中檢索不尋常的投注? –