2013-03-25 45 views
0

我有这样如何将一个额外的价值添加到查询在C#

var values = ProjectContext.controloptions.Where(i => i.id == id).Select(i => new { 

      i.value 
     }).ToList(); 

查询现值包含4个记录我想添加2条记录,如

values.Insert(0, new { "Select" }); 
    values.Add("AddNew"); 

但显示错误。其中i.value是数据库中的varchar字段。

如何将两条记录添加到没有额外字段的列表中。

+2

什么是错误您收到? – Default 2013-03-25 07:30:39

+0

无效的匿名类型成员声明。他们必须声明与成员分配,简单名称或成员访问 – Pa1 2013-03-25 07:36:28

回答

1

您正在选择匿名类型。您只能通过匹配属性的名称和类型添加此类型的另一个对象,这样的:

var values = new[]{ new Options{value = 666, id = 5}} //array to demo purposes 
       .Where(i => i.id == 5) 
       .Select(i => new { 
           value = i.value.ToString() 
       }) 
       .ToList(); 

values.Add(new {value = "Select"}); 
values.Insert(0, new {value = "AddNew"}); 

现在values包含匿名类型(string类型的一个属性value)三个对象,并可以打印成

AddNew 
666 
Select 

考虑创建新的自定义类,然后在Select投影使用它,就像这样:

class MyCustomClass 
{ 
    public string Value { get; set; } 
} 

然后创建Select

List<MyCustomClass> values = new[]{ new Options{value = 666, id = 5}} 
       .Where(i => i.id == 5) 
       .Select(i => new MyCustomClass { 
           Value = i.value.ToString() 
        }) 
       .ToList(); 

values.Add(new MyCustomClass { Value = "Select"});    
values.Insert(0, new MyCustomClass { Value = "AddNew"}); 

此对象现在您的清单被命名为类型List<MyCustomClass>和元素可以添加和删除到名为类

+0

我不想使用自定义变量,如值或任何其他。我们不能直接给列表添加一个值。 – Pa1 2013-03-25 07:41:09

+1

是的,正如我在第一个例子中展示的那样 - 'values.Add(new {value =“Select”});'通过*自定义变量*您可能意味着自定义类型 – 2013-03-25 07:41:48