我嘗試創建lastReadings的分組,以創建客戶和競爭對手的價格。我嘗試下面的代碼,但這種方法並不能消除只有客戶端的讀數。在下面的表中,我需要消除讀數5和6,對於產品C和D,因爲沒有匹配並且只進一步傳遞可比較的產品。只有當一個組中的所有元素都具有列中的值時才與Linq分組
readingId ProductId Distributor Price
1 A Competitor 8.0
2 A Client 8.1
3 B Competitor 8.3
4 B Client 8.4
5 C Client 8.8
6 D Client 8.9
下面是我得到迄今:
private IEnumerable<PriceComparison> getPriceComparisons(string competitor)
{
IEnumerable<IGrouping<string, LatestReading>> groupingsByProductId =
from latestReading in LatestReadings
group latestReading by latestReading.ProductId;
IEnumerable<PriceComparison> priceComparisons
= from grouping in groupingsByProductId
select new PriceComparison
{
ProductId = grouping.Key,
MyPrice = (from latestReading in grouping
where latestReading.Distributor == Client
select latestReading.Price).FirstOrDefault(),
CompetitorPrice = (from latestRading in grouping
where latestRading.Distributor == competitor
select latestRading.Price).FirstOrDefault()
};
return priceComparisons;
}
其實在我寫這篇文章,我得出的結論是「無競爭」的附加創建分組,競爭對手的價格有沒有爲0,所以後來我可以輕鬆地消除這些分組和代碼工作。但是,不知何故,這種創建「空白」分組的方法並不合適,除了產品C和D之外,是否還有更好的方法來專注於分組?
如果有兩個讀數相同的產品,這是否意味着他們中的一個是客戶端和其他競爭對手? –
是的,但是可能會有更多的競爭對手同樣的產品 – Turo