我有一個包含步行統計資料的 SQL 資料庫。
我正在將 SQL 中的資料提取到 C# 中的“事務”串列中。Transaction 是一個類,表示某個人某天步行的公里數,即
public class Transaction
{
public Transaction(string firstName, string lastName, DateTime date, int kilomtersWalked)
{
FirstName = firstName;
LastName = lastName;
Date = date;
KilometersWalked = kilomtersWalked;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime Date { get; set; }
public int KilometersWalked { get; set; }
}
我從 SQL 填充串列,但為了說明資料,我將在此處使用硬編碼值對其進行實體化。
List<Transaction> transactions = new List<Transaction>
{
new Transaction("Michael", "Smith", new DateTime(2021, 01, 01), 5),
new Transaction("Michael", "Smith", new DateTime(2021, 01, 02), 8),
new Transaction("Michael", "Smith", new DateTime(2021, 01, 03), 7),
new Transaction("Hillary", "Johnson", new DateTime(2021, 01, 01), 12),
new Transaction("Hillary", "Johnson", new DateTime(2021, 01, 02), 3),
new Transaction("Hillary", "Johnson", new DateTime(2021, 01, 03), 6)
};
我想將資料轉換為“PersonStats”串列。PersonStats 是一個類,表示特定人步行的公里數,不僅僅是一天,而是每一天,即
public class PersonStats
{
public PersonStats(string firstName, string lastName, DateTime[] dates, int[] kilomtersWalked)
{
FirstName = firstName;
LastName = lastName;
Dates = dates;
KilometersWalked = kilomtersWalked;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime[] Dates { get; set; }
public int[] KilometersWalked { get; set; }
}
雖然我為此付出了很多努力,但我仍然沒有想出一個優雅的方法來做到這一點。任何想法將不勝感激!
uj5u.com熱心網友回復:
您可以PersonStats通過對 FirstName 和 LastName 進行分組來創建實體。由于世界上有很多邁克爾史密斯,因此最好為每個人和團體引入一個唯一的 ID。
var ps = transactions
.GroupBy(g => new { g.FirstName, g.LastName })
.Select(g => new PersonStats(
g.Key.FirstName,
g.Key.LastName,
g.Select(_ => _.Date).ToArray(),
g.Select(_ => _.KilometersWalked).ToArray()));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373232.html
