我有一个包含7列的列表,其中包含使用Oledb从Excel工作表导入的多行数据。现在我想通过列表并从第1列开始检查第一列第一行中的值并找出它在列表中出现的次数,如果它出现多次,我想存储所有其他列值与其他列表中的第一列一起进行某些操作
例如,我在列表中有以下数据行
Time CC Month prc str tx qq
14:46:00 NP 14-Dec 4.0000 6,000
14:46:00 LN 14-Dec 6.00 Put 2.0090 1,500
14:46:00 LN 14-Dec 6.00 Call 0.0095 1,500
14:42:57 LN 14-Sep 3.85 Put 0.0860 50
14:42:57 LN 14-Sep 3.85 Call 0.1200 50
14:34:00 LN 14-Sep 3.25 Put 0.0025 200
14:34:00 LN 14-Sep 3.50 Put 0.0100 100
14:32:00 NP 14-Dec 4.0000 2,000
14:32:00 LN 14-Dec 6.00 Put 2.0090 500
14:32:00 LN 14-Dec 6.00 Call 0.0095 500
14:27:00 LN 15-Mar 4.50 Call 0.2230 100
14:26:00 LN 15-Mar 4.50 Call 0.2210 200
在列表中的上述数据行中,我的第一列为time
,而time
列的第一行为14:46:00
,现在要检查次数{{1重复并插入与14:46:00
关联的所有行和列,并对它们执行一些算术运算,然后移到下一个唯一的14:46:00
时间值并重复该过程
14:42:57
的示例List1如下
Time 14:46:00
一旦在上面的列表上完成某些操作,它就可以被14:46:00 NP 14-Dec 4.0000 6,000
14:46:00 LN 14-Dec 6.00 Put 2.0090 1,500
14:46:00 LN 14-Dec 6.00 Call 0.0095 1,500
的下一组值覆盖
我已使用以下代码行将Excel表格中的数据导入列表
time 14:42:57
答案 0 :(得分:1)
public class AxiomDS
{
public DateTime time { get; set; }
public string CC { get; set; }
public string term { get; set; }
}
public class Program
{
static void Main(string[] args)
{
List<AxiomDS> resultAxiomData = new List<AxiomDS>();
var uniqueTimes = resultAxiomData.Select(a => a.time).Distinct();
foreach (var uniqueTime in uniqueTimes)
{
// Find all records that have this time
var recordsToProcess = resultAxiomData.Where(r => r.time == uniqueTime);
// TODO:
foreach (var record in recordsToProcess)
{
// Do something with this list
}
}
}
}
答案 1 :(得分:1)
听起来您希望按time
对条目进行分组,然后对每个包含多条记录的组执行一些操作。 LINQ让这很容易:
var groupedData = from result in resultAxiomData
group result by result.time into resultGroup
where resultGroup.Count() > 1
order by resultGroup.Key
select resultGroup;
现在您可以遍历分组结果:
foreach (var timeGroup in groupedData)
{
// timeGroup.Key is the time
foreach (var entry in timeGroup)
{
// process the entry
}
}
答案 2 :(得分:0)
使用LINQ到对象:
public class Row {
DateTime Time {get; set;}
string CC { get; set; }
string Month {get; set;}
double PRC {get; set;}
string Str {get; set;}
double TX {get; set;}
int QQ { get; set; }
}
var allEntries = new List<Row>();
//Load data...
var allEntriesDict = allEntries.Select(entry => entry.Time)
.Distinct()
.ToDictionary(time => time,
time => allEntries.Where(entry => entry.Time == time).ToList());
foreach(var kvp in allEntriesDictionary) {
//kvp.Key is the Time
//kvp.Value is a List<Row>
DoCalculations(kvp.Value);
}