person { stringid { get; set; } string name { get; set; } DateTime birthday { get; set; } int sex { get; set; } string pairid { get; set; } } List<person> obj = new List<person>(); obj.Add(new person {....});
sexには1=男,2=女
pairidにはsexが1の場合は2のどれか
2の場合は1のどれか
つまりカップルとしてペアリングされていて
pairidがない場合はフリーというようなデータが入ったobjがあり、
pairidがnullではない場合(つまりカップルとなっている)にカップルの誕生日が若い方に対してoderbyしたlistを取得したい。
var a = obj.Where(r=> r.sex == 1).Orderby(下記条件).ToList(); orderbyの条件 foreach(person p1 in obj) { if (p1.pairid != null) { foreach(person p2 in obj) { if (p1.pairid == p2.id) { if (p1.birthday.CompareTo(p2.birtday)) { p1.birthday } else { p2.birthday } } } } }
var a にはpersonのプロパティに加え、p2.birthdayが条件の対象となった場合に追加されたListとしたい。
ちなみに var aとなってるところの型は正しくはどうなるのでしょうか?
型でvarの使い方がいまいち理解できていません。
どうぞよろしくお願いします。
「一発でとる」「joinしてbirthdayを比較して新しいほう」と言ってますが、最終的に「どのようなデータ集合を取得したいのか」が明記されていないので、回答が難しいです。
何と比較するのかよくわからないので、何がしたいのか日本語として意味がわかりません。
一度 https://teratail.com/help/question-tips を読んでみることをお勧めします。そこにも書いてありますが、"人に質問をするには、自分が何を尋ねたいかを知っている必要があります。これは、「自分が今『何がわからないのか』がわかっていて、言語化できている」ということです" が十分にできておらす、今は "何がわからないかわからない人から質問を受けても、答える側も困ってしまいます" という状況です。「一発」ってなんなのかわかりませんが、質問者さんが二発、三発で取れるならそのコードをアップして、それをどうしたいのか書くというような配慮が必要です。
カップルを対象にペアの若いほうを取り出し、取り出したものを若い順に並べる、これをメソッドチェーンを使って行う ってことですかね? 回答より何を言ってるのか理解するほうが難しいです。
pairにはidが入っている。idは一意の値である。ほしい情報は上記のプロパティとさらにpairidに入っているidに紐づくプロパティです。 ebiryoさんが言われてることです
「pairにはidが入っている。idは一意の値」 などは皆さんわかってらっしゃると思いますよ。もし私の言っていることが正しいのであれば、質問を書き直してはいかがでしょうか。
サンプルデータを用意して、ソート前の値と期待するソート後の値を書いた方がわかりやすいと思います。
回答1件
あなたの回答
tips
プレビュー