我想将此行添加到我的列表中,但是当我将此消息错误results.Add("TOUT");
时
如何将TOUT添加到列表中
这是我想要添加新元素的方法
dynamic results = (from ta in db.client
select new
{
Name= ta.Name
}).Distinct().ToList();
有人可以帮我解决这个问题并感谢你的帮助
答案 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
)