如何在列表中添加元素

时间:2016-01-21 13:32:16

标签: c# asp.net

我想将此行添加到我的列表中,但是当我将此消息错误results.Add("TOUT");时 如何将TOUT添加到列表中

这是我想要添加新元素的方法

 dynamic results = (from ta in db.client
                               select new
                               {
                                   Name= ta.Name
                               }).Distinct().ToList();

有人可以帮我解决这个问题并感谢你的帮助

2 个答案:

答案 0 :(得分:1)

Linq不是为了支持数据操作而是为数据查询而创建的。因此,您必须将结果转换为可以添加元素的任何类型的列表。 e.g:

var results = (from ta in db.client
        select new
        {
            Name= ta.Name
        }).Distinct().ToList();

现在,您可以通过创建共享所需属性的匿名实例来添加元素。

results.Add(new { Name = "TOUT" });

请注意,此处不需要关键字dynamic,因为返回的列表已经是强类型的(虽然程序集中没有类定义,但定义位于临时程序集中,其类型为叫anonymous)。

编辑:为简化起见,您还可以完全省略匿名类型,只选择name

所以而不是

select new { ... }
你写了

select ta.Name 

因此,您将获得一个字符串列表,您只需添加最后一个元素TOUT即可。

答案 1 :(得分:1)

您无法在列表中添加string,因为您没有创建字符串列表。您正在创建匿名类型的实例列表 几乎不需要创建只包含一个属性的匿名类型,因此只需选择字符串:

(from ta in db.client select ta.Name).Distinct().ToList()

或只是

db.client.Select(ta => ta.Name).Distinct().ToList()

这将创建List<string>。 (假设ta.Name是string