将LINQ行结果返回到Array或List

时间:2013-04-10 11:01:18

标签: c# arrays linq list

我有一个LINQ查询,我想返回它的行。 perferred输出将是行列表或数组。

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&GT)   无法从使用中推断出来。尝试指定类型参数   明确。

有点像这样

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

因此,当我收到我的列表时,我可以删除每一行,然后分开数据。

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分: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;
}

答案 2 :(得分:0)

在查询中选择所需的数据,并在查询中使用ToList方法:

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

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