Q.表を結合したい3(非等価結合、やや使う違いない) let を使って、選択した行を保持する事により実現できます。 class 得点表 { public string 氏名 { set; get; } public int 得点 { set; get; } } class 評価表 { public int 以上 { set; get; } public int 未満 { set; get; } public string 評価 { set; get; } } class 氏名と評価 { public string 氏名 { set; get; } public string 評価 { set; get; } }
var tableOrg1 = new 得点表[] { new 得点表() { 氏名="Aさん" , 得点=10 }, new 得点表() { 氏名="Bさん" , 得点=100 }, new 得点表() { 氏名="Cさん" , 得点=60 }, }; var tableOrg2 = new 評価表[] { new 評価表() { 以上=0 , 未満=20, 評価="丙" }, new 評価表() { 以上=20 , 未満=70, 評価="乙" }, new 評価表() { 以上=70 , 未満=101, 評価="甲" }, }; var table1 = from row1 in tableOrg1 let selectLines = from row2 in tableOrg2 where (row2.以上 <= row1.得点 && row1.得点 < row2.未満) select row2 select new 氏名と評価() { 氏名 = row1.氏名, 評価 = selectLines.First().評価 }; table1 の結果 Aさん 丙 Bさん 甲 Cさん 乙 あんま綺麗じゃない……equalsに対してLINQの拡張求む > Microsoft