在Linq中选择“列表”



我有多个选择语句获取结果作为列表,我需要添加这个列表最后绑定到下拉列表。这就是我目前正在做的事情。

 public void load()
{
    try
    {
        using (DataContext db = new DataContext())
        {
            var cm = (from c in db.COMPANY_MASTERs
                      select c).FirstOrDefault();
            if (Convert.ToBoolean(cm.PLANT))
            {
                var Div = (from vp in db.PLANT
                           select new
                           {
                               ID = vp.PLANT_ID,
                               NAME = vp.PLANT_NAME
                           }).ToList();
            }
            if (Convert.ToBoolean(cm.ANIMAL))
            {
                var Dep = (from vp in db.ANIMAL
                           select new
                           {
                               ID = vp.ANIMAL_ID,
                               NAME = vp.ANIMAL_NAME
                           }).ToList();
            }
            //this is what I am trying to do but cant,since the variables are nested                inside if.
              Div.AddRange(Dep);
            ddl.DataTextField = "NAME";
            ddl.DataValueField = "ID";
            ddl.DataSource = Div;
            ddl.DataBind();
}

这是我的问题,

1。

如何克服这个匿名类型错误并将添加的列表绑定到下拉列表?

谢谢

选择时,创建Variable类型的新实例,而不是匿名选择:

var Div = (from vp in db.PLANT
           select new Variable()
           {
               ID = vp.PLANT_ID,
               GENDER = vp.PLANT_NAME
           }).ToList();

然后对Dep变量做同样的操作:

var Dep = (from vp in db.ANIMAL
           select new
           {
               ID = vp.ANIMAL_ID,
               GENDER = vp.ANIMAL_NAME
           }).ToList();

你就能得到AddRange()


编辑:你的变量需要在同一范围内一起使用。您应该在函数的顶部声明它们(强类型)。(由于andrii.litvinov)

List<Variable> Div;
List<Variable> Dep;

您可以初始化lstVar并使用连续的foreach循环添加其他两个列表的内容

除了Gabriel GM答案之外,还应该在if之前声明变量

相关内容

  • 没有找到相关文章

最新更新