- - PR -
LINQのJOIN句
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-07-08 22:42
いつも、お世話になっております。
Linqの勉強がてら以下のようなデータを想定してみたのですが、 うまくいきません。 List<clPoint> Points = new List<clPoint>(); List<clPoly> Polys = new List<clPoly>(); public class clPoint { public string ID; public double X; public double Y; } public class clPoly { public string ObID = string.Empty; public string ObName = string.Empty; public List<string> ID = new List<string>(); } public void test() { clPoint P = new clPoint(); P.ID = "1"; P.X = 0.0; P.Y = 0.0; Points.Add(P); clPoint P = new clPoint(); P.ID = "2"; P.X = 10.0; P.Y = 10.0; Points.Add(P); clPoint P = new clPoint(); P.ID = "3"; P.X = 10.0; P.Y = 0.0; Points.Add(P); clPoly Po = new clPoly(); Po.ObID = "1"; Po.ObName = "hoge"; Po.ID.Add("1"); Po.ID.Add("2"); Po.ID.Add("3"); Polys.Add(Po); var q = from s in Polys join r in Points on s.ID equals r.ID //JOIN句の式の型が正しくありません。'Join' の呼び出しで型を推論できませんでした。 select s; } PolysデータのIDからPointsのX,Yを取得したいのですが、LINQを使っての方法は無理でしょうか? | ||||
|
投稿日時: 2008-07-09 06:48
もっといい方法があるかもしれないですけど、下のような感じとかどうですか?
実行結果 1 1, 0, 0 2, 10, 10 3, 10, 0 2 2, 10, 10 3, 10, 0 [ メッセージ編集済み 編集者: Kazuki 編集日時 2008-07-09 06:50 ] | ||||
|
投稿日時: 2008-07-09 10:25
Kazukiさん、ありがとうございます。
ほぼ期待通りの結果を得られました。 ただ、p.IDでソートされている?みたいなので、 調査してみます。 |
1