2013-11-03 54 views
-1

經過多次搜索google並查找全部答案,我決定在此尋求幫助。包含IEnumberable到列表中的字符串的列<string>

的問題如下: 我有這個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; } 

} 

WISH: 我想是從var FormQry選擇S1列刪除所有空值,將其清除並將其轉換爲List<string>

什麼工作,但不是很好: 我發現,現在唯一的辦法就是投FormQry到List<forma>,並從那裏乘S1分量和迭代槽個個(16K其中:S)榜上無名出來的

回答

0

您可以使用ConvertAll來實現此類轉換。請參見下面的代碼示例:

class special 
    { 
     public string something = ""; 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      List<special> list = new List<special>(); 

      List<string> stringlist = list.ConvertAll(c => c.something);  
     } 
    } 
0
var result = FormQry.Select(f=>f.s1) 
        .Where(s=>s != "null") 
        .Distinct().ToList(); 
+0

歡呼聲!我自己找到了解決方案,並決定讓大家知道我什麼時候看到你的帖子。太感謝了! – Lurker

+0

@Lurker你的意思是這個答案只是一個建議,引導你到你自己的解決方案,這個答案不能解決你的問題? –

+0

這和我自己做的完全一樣,它確實解決了一個問題! :d – Lurker

相關問題