将generic.List <anonymous type>转换为generic.list <string>?</string> </anonmoustype>

时间:2014-01-01 18:21:37

标签: c# generics

当我写下面的查询表明:

时,我经常遇到错误
  

无法隐含转换类型将generic.List<Anonmoustype>转换为genreic.list<string>

我无法弄清楚它的含义是什么意思?

我在下面的代码

中分配Total = Ma时收到错误

以下是代码:

using (var context = new SAIntegrationEntities())
{                
    var Ma = context.PAFs
        .Where(b => b.PostCode == txtaddrss.Text)
        .Select(b => new { b.GhouseNo, b.Eroad, b.City }).ToList();

    List<string> Total = Ma;

    foreach (string name in Total)
    {
        listBox1.Items.Add(name);
    }
}

2 个答案:

答案 0 :(得分:5)

您正在尝试将一种类型的列表转换为完全不同类型的列表:

List<string> Total = Ma;

Ma已被定义为匿名类型列表:

{ b.GhouseNo, b.Eroad, b.City }

您如何期望将包含三个字段的类型隐式转换为字符串?即使可能,也不意味着该类型的List可以隐式转换为List<string>

您希望您的字符串列表实际包含哪些内容?其中一个属性?像这样?:

List<string> Total = Ma.Select(m => m.GhouseNo).ToList();

所有属性都加入了一些分隔符?像这样?:

List<string> Total = Me.Select(m => string.Join(", ", m.GhouseNo, m.Eroad, m.City));

您必须定义某种转换,从包含三个字段的类型到您想要的字符串。编译器无法猜测你想要做什么。

答案 1 :(得分:0)

Ma是一个匿名类,有三个属性:GhouseNo,Eroad和City。这个类不是字符串是合乎逻辑的。

也许你可以尝试这样的事情:

var Ma = context.PAFs
                .Where(b => b.PostCode == txtaddrss.Text)
                .Select(b => new { b.GhouseNo, b.Eroad, b.City }).ToList();

foreach (string name in Ma)
{
  listBox1.Items.Add(name.GhouseNo + ", " + name.Eroad + ", " + name.City);
}