0

我有这样的查询

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字段在哪里。

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

4

1 回答 1

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包含三个匿名类型的对象(一个类型的属性valuestring并且可以打印为

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 具有命名类型List<MyCustomClass>,并且可以使用命名类向其中添加和删除元素

于 2013-03-25T07:33:36.710 回答