簡體   English   中英

在C#的列表中找到匹配的位置和日期

[英]Find the matching postion and date in a List in c#

我有兩個列表-StockData和UpDownData。

db1 newStock = new db1();
newStock.Date = (DateTime)reader["Date"];
newStock.High = (double)reader["High"];
StockData.Add(newStock);

db1 newStock2 = new db1();
newStock2.Date = (DateTime)reader2["Date"];
newStock2.Min_Max_Value = (double)reader2["Min_Max_Value"];
UpDownData.Add(newStock2);

int a = 0;
int pos = 0;
DateTime? date1 = null;

while (a < UpDownData.Count && UpDownData.ElementAt(a)?.Date == StockData[i].Date)
{
pos = a;                            
date1 = UpDownData.ElementAt(a).Date;
a++;
}
Console.WriteLine(date1);

我試圖將StockData列表中的日期與UpDownData列表中的日期匹配 找到匹配項后,我使用UpDownData列表中元素的位置a )打印匹配日期

但是上面的代碼無法找到匹配的日期。 有人可以幫忙嗎?

謝謝

編輯:

下圖應該給您一個想法:

在此處輸入圖片說明

因此,UpDownData列表中的匹配日期分別為6/30/2015和7/16/2015,位置a = 0和a = 6。 我只需要POSTION和DATES。

嘗試以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication65
{
    class Program
    {
        static void Main(string[] args)
        {
            StockData.data = new List<StockData>() {
                new StockData() { date = DateTime.Parse("6/17/2015"), high = 256.9},
                new StockData() { date = DateTime.Parse("6/18/2015"), high = 260.7},
                new StockData() { date = DateTime.Parse("6/23/2015"), high = 271.2},
                new StockData() { date = DateTime.Parse("6/24/2015"), high = 267.9},
                new StockData() { date = DateTime.Parse("6/25/2015"), high = 266},
                new StockData() { date = DateTime.Parse("6/26/2015"), high = 266.9},
                new StockData() { date = DateTime.Parse("6/30/2015"), high = 263.35},
                new StockData() { date = DateTime.Parse("7/8/2015"), high = 271},
                new StockData() { date = DateTime.Parse("7/10/2015"), high = 271},
                new StockData() { date = DateTime.Parse("7/13/2015"), high = 274.35},
                new StockData() { date = DateTime.Parse("7/14/2015"), high = 273.6},
                new StockData() { date = DateTime.Parse("7/15/2015"), high = 271.7},
                new StockData() { date = DateTime.Parse("7/16/2015"), high = 272.75}
            };


            UpDownData.data = new List<UpDownData>() {
                new UpDownData() { date = DateTime.Parse("6/30/2015"), min_max = 263.35},
                new UpDownData() { date = DateTime.Parse("7/8/2015"), min_max = 250},
                new UpDownData() { date = DateTime.Parse("7/10/2015"), min_max = 236.65},
                new UpDownData() { date = DateTime.Parse("7/13/2015"), min_max = 223.3},
                new UpDownData() { date = DateTime.Parse("7/14/2015"), min_max = 209.95},
                new UpDownData() { date = DateTime.Parse("7/15/2015"), min_max = 196.6},
                new UpDownData() { date = DateTime.Parse("7/16/2015"), min_max = 272.75}
            };

            var results = (from sData in StockData.data
                           join uData in UpDownData.data on sData.date equals uData.date
                           select new { sData = sData, uData = uData })
                          .Where(x => x.sData.high == x.uData.min_max)
                          .Select(x => new { date = x.sData.date, value = x.sData.high }).ToList();

        }
    }
    public class StockData
    {
        public static List<StockData> data = new List<StockData>();

        public DateTime date { get; set; }
        public double high { get; set; }
    }
    public class UpDownData
    {
        public static List<UpDownData> data = new List<UpDownData>();

        public DateTime date { get; set; }
        public double min_max { get; set; }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM