2013-04-10 51 views
0

我有一個LINQ查詢,我想返回它的行。 已獲得的輸出將是行或列表的列表。將LINQ行結果返回給數組或列表

var Cases = from q in db.Cases 
        where q.Company == Company 
        select q; 

這將得到我想要的情況,但我想我的方法返回一個數組或行的列表。許多谷歌命中建議使用SelectMany();但我不斷收到錯誤。 例如:

public static List<string> ReceiveDBlist(string Company) 
    { 
     var Cases = from q in db.Cases 
        where q.Company == Company 
        select q; 

     List<string> lst = Cases.SelectMany(x => x).ToList(); 
     return lst; 
    } 

給出這樣的錯誤:

的類型參數方法 System.Linq.Enumerable.SelectMany(System.Collections.Generic.IEnumerable, System.Func>) 不能從使用中推斷出來。嘗試明確指定類型參數 。

有點像這個

0 : column1;column2;column3 
1 : column1;column2;column3 
2 : column1;column2;column3 

所以,當我收到我的名單,我可以disect每一行,然後單獨的數據。

+0

我不知道你到底在找什麼,但是'SelectMany'肯定是不正確的。 'SelectMany'用於將IEnumerable >平展到'IEnumerable '。 – 2013-04-10 11:03:26

+0

看起來你需要將任何'Cases'投影到'string'。 'SelectMany'將返回'x'中所有可枚舉的元素,嘗試追加另一個'Select'來投影到一個字符串。如果所有你想要的都是一個簡單的案例列表,那麼'SelectMany'的用法是不正確的,但是你可能仍然需要用'Select'來投影'Case'到一個字符串中。 – 2013-04-10 11:06:10

+0

數據庫包含行數據,例如「主題」,「狀態」和「評論」等行。 目標是獲取每個索引上的每一行的List,就像我試圖用列解釋(抱歉,如果描述是vaque) – 2013-04-10 11:10:35

回答

1

你可以嘗試另一種方法:

public static List<string> ReceiveDBlist(string Company) 
{ 
    List<string> result = new List<string>(); 

    var Cases = from q in db.Cases 
       where q.Company == Company 
       select q; 

    foreach(var c in Cases) 
    { 
     string row = c.Column1 + ";" + c.Column2 + ";" + c.Column3; 
     result.Add(row); 
    } 

    return result; 
} 
+0

這正是我想要的。感謝隊友:) – 2013-04-10 12:16:15

+3

上面的LINQ版本:'return cases.Select(c => string.Join(';',new [] {c.Column1,c.Column2,c.Column3}))。ToList() '。避免尷尬的「創建列表並填充它」的代碼。 – Avish 2014-04-26 20:26:38

1

這是因爲Cases不是字符串,所以您需要選擇Cases的確切屬性,例如,如果你有CaseTitle然後你可以只使用.ToList()像這樣的屬性:

public static List<string> ReceiveDBlist(string Company) 
{ 
    var Cases = from q in db.Cases 
       where q.Company == Company 
       select q.CaseTitle; 

    return Cases.ToList(); 
} 
+0

是的,也嘗試過,似乎是簡單的方法,但給出此錯誤:不能隱式轉換類型'System.Collections.Generic.List '到'System.Collections.Generic.List ' – 2013-04-10 11:04:22

+0

@SimonLausten這是因爲個案不是一個字符串。我已經擴展了我的答案(即選擇q.CaseTitle) – Belogix 2013-04-10 11:06:14

+0

這就是問題所在,我希望整行,分開;或類似的東西。這可能嗎? – 2013-04-10 11:08:05

0

選擇在查詢所需的數據,並且只使用ToList方法上查詢:

var Cases = from q in db.Cases 
    where q.Company == Company 
    select q.Name; 

List<string> lst = Cases.ToList();