私はこのlinqを持っています:
var FormQry =
(from a in db.deriv_form
join b in db.deriv_affix on a.s1_id.Value equals b.id into t1
from g1 in t1.DefaultIfEmpty()
join c in db.deriv_affix on a.s2_id.Value equals c.id into t2
from g2 in t2.DefaultIfEmpty()
join d in db.deriv_affix on a.s3_id.Value equals d.id into t3
from g3 in t3.DefaultIfEmpty()
join e in db.deriv_affix on a.p1_id.Value equals e.id into t4
from g4 in t4.DefaultIfEmpty()
join f in db.deriv_affix on a.p2_id.Value equals f.id into t5
from g5 in t5.DefaultIfEmpty()
join g in db.deriv_affix on a.p3_id.Value equals g.id into t6
from g6 in t6.DefaultIfEmpty()
join h in db.deriv_affix on a.p4_id.Value equals h.id into t7
from g7 in t7.DefaultIfEmpty()
join i in db.deriv_stem on a.o1_id equals i.id into t8
from g8 in t8.DefaultIfEmpty()
join j in db.deriv_root on g8.root_id equals j.id into t9
from g9 in t9.DefaultIfEmpty()
select new forma()
{
form = a.form,
s1 = g1.allomorph == null ? "null" : g1.allomorph,
s2 = g2.allomorph == null ? "null" : g2.allomorph,
s3 = g3.allomorph == null ? "null" : g3.allomorph,
p1 = g4.allomorph == null ? "null" : g4.allomorph,
p2 = g5.allomorph == null ? "null" : g5.allomorph,
p3 = g6.allomorph == null ? "null" : g6.allomorph,
p4 = g7.allomorph == null ? "null" : g7.allomorph,
root = g9.morpheme
}).AsEnumerable<forma>();
そして、私の素敵なフォルムクラスは次のようになります
public class forma
{
public string form { get; set; }
public string s1 { get; set; }
public string s2 { get; set; }
public string s3 { get; set; }
public string p1 { get; set; }
public string p2 { get; set; }
public string p3 { get; set; }
public string p4 { get; set; }
public string root { get; set; }
}
希望:私が欲しいのは、 var FormQry
選択したs1列からすべてのnullを削除し、それを区別してにキャストすることList<string>
です。
何がうまくいくが、良くない:私が今見つけた唯一の解決策は、FormQryをList<forma>
そこからキャストし、そこからs1コンポーネントを取得し、それらすべてを繰り返し処理してリストを作成することです(16k:S)