-5
私はC#でエンティティフレームワークを使用していますが、このコードをどのように進めるかはわかりません。私の擬似コードは下にあり、私は株取引のリストを持っており、私はデータベーステーブルに存在しないトランザクションを挿入しようとしていますが、これを行うためにlinqコードを書く方法はわかりません。このlinqステートメントを修正するにはどうすればよいですか?
この現在のコードは、私は、このエラーを与える:あなたは私がやろうとしているかを理解できるよう
Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<System.DateTime>' to 'Finance.Program.HistoryPrice'
public class DailyAmexData
{
public int ID { get; set; }
public string Symbol { get; set; }
public DateTime Date { get; set; }
public decimal Open { get; set; }
public decimal High { get; set; }
public decimal Low { get; set; }
public decimal Close { get; set; }
public decimal AdjustedClose { get; set; }
public int Volume { get; set; }
}
public class HistoryPrice
{
public DateTime Date { get; set; }
public decimal Open { get; set; }
public decimal High { get; set; }
public decimal Low { get; set; }
public decimal Close { get; set; }
public Int32 Volume { get; set; }
public decimal AdjClose { get; set; }
}
using (financeEntities context = new financeEntities())
{
foreach (string symbol in symbols)
{
List<HistoryPrice> hList = Get(symbol, new DateTime(1900, 1, 1), DateTime.UtcNow);
List<DailyAmexData> aList = await (context.DailyAmexDatas.Where(c => c.Symbol == symbol && hList.Contains(hList.Select(i => i.Date)) == false).ToListAsync<DailyAmexData>()); // pseudo code that I wrote so you hopefully understand what I'm trying to do here which is only return a list of DailyAmexData that doesn't exist in the database yet and then save those items to the database
foreach(DailyAmexData item in aList)
{
// insert values of item in database table
}
}
}
UPDATE私は私の質問にいくつかの変更を行いました。そこ
hList.Contains(hList.Select(i => i.Date))
、あなたはどのHistoryPrice
(hList.Contains
があるかどうかをチェックしている:
あなたの 'Get'メソッドは何をしますか?あなたのコードの残りの部分は、あなたが望むものに合わないものは何ですか? – krillgar
@krillgarこれは、そのシンボルのHistoricalDataアイテムの完全なリストを返すだけです。データベースに存在しないすべてのHistoricalDataアイテムをデータベース内に追加しようとしています。 – user3610374
Didあなたはこれを試して?それは動作しませんか? – krillgar