CSVファイル内のyyyy-MM-dd-hh-mm-ssで入っているデータのフォーマットをyyMMddに変えたいのですがどうしたら変換を行えますでしょうか?
DateTime.ParseExact(c.date,"yyMMdd",out result),というものがあったので試してみたのですがいまいちやり方がわかりませんでした。
"yyyy-MM-dd-hh-mm-ss" という文字列がresult内に格納されるのですが、
そのデータを"201221" という形の文字列に変換したいということになります。
csvから取得したデータとoracleから取得したデータをリザルトにいれております
説明不足申し訳ありません
c#
1//csvデータ 2csvDT 3{ 4public string name {get;set;} 5public string date{get;set;} 6public string code{get;set;} 7 8} 9//オラクルデータ 10oracleDT 11{ 12public string name {get;set;} 13public string date{get;set;} 14public string code{get;set;} 15 16} 17//結果用 18result 19{ 20 public string 名前 {get;set;} 21 public string 投入日{get;set;} 22}
c#
1var join = from c in csvDT 2 join o in oracleDT 3 on c.code equals o.code 4 5select new result 6{ 7date= c.date, 8name= c.name 9 10}; 11
試そうとしたサンプル(linqで使う方法がわからなかった)
var join = from c in csvDT join o in oracleDT on c.code equals o.code select new result { date = DateTime.ParseExact(c.name, "ddMMyyyy", CultureInfo.InvariantCulture),
質問内容と貼られているコードの関連が不明。
「DateTime.intparse(),で試したのですが」と書かれているがそんなメソッドはない。
定義不明の変数が多々ありますが、回答者の想像力に期待しないで、ちゃんと書いてください。一番上のブロックのコードは何? csvDT とは何? oracleDT とは何? 「データのフォーマットをyyMMddに変えたい」というのはどういうこと?
単純にハイフンで Split して前から三つ連結すればいいのでは?
LINQ で難しければループを使えばいいだけ。三つくらいならループなしでもできる。それも難しいならあなたには何も作れません。
コピペできるコードを探して切り貼りするようなことしかするつもりがないなら、早めにやめましょう。
>@質問者さん
LINQにこだわっておられるようですが、それ以前の話では。そもそも"yyyy-MM-dd-hh-mm-ss"な日時文字列を"yyMMdd"に、例えば"2020-12-22-12-34-56"を西暦下2桁で、"201222"に変換するコードを書けるかどうか、というところでしょう。Splitでもできますし、ReplaceとSubstringでもできるはずです。混乱しているのであれば、LINQと分けて考えてください。
>@dodox86さん
すみません完全にてんぱっていました。splitしか方法ないと思いその記事しか見てなかったのですが、確かにreplaceとsubstring のこと完全に頭の中から外れていました。分けて考えたら無事出来ました。ありがとうございます。
@zuishinさん
その通りですね。
回答がついた後は質問欄を書き換えないでください。回答と質問の辻褄が合わなくなって訳がわからなくなりますので。質問欄を編集する場合は、追記する形でお願いします。
質問のコメント欄は「質問への追記・修正の依頼」をする場所ですので、その限りではありませんが。
@SurferOnWwwさん
かしこまりました。編集ではなく今後追記致します。事前に把握しておらず申し訳ありません。
結局何をしたいのか分からなくなってきました。何がこのスレッドで解決したい課題なのか整理して書いてください。それに対してレスしますので。
回答1件
あなたの回答
tips
プレビュー