【问题标题】:Select List in Linq在 Linq 中选择列表
【发布时间】:2014-03-17 14:09:35
【问题描述】:

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

 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.如何克服这个匿名类型错误并将添加的列表绑定到下拉列表。

谢谢

【问题讨论】:

  • 你有什么问题?
  • 实际上,我无法使用 AddRange,我需要将这些列表添加在一起。

标签: c# asp.net linq c#-4.0 linq-to-sql


【解决方案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;

【讨论】:

  • 是的,谢谢,但是 if 语句呢?因为它们都在 if 中,我该怎么做 AddRange?
  • 是的,非常感谢,这是正确的做法吗?(AddRange)还是我在做一些不想要的事情?
  • 这是正确的做法。与往常一样,有很多正确的方法;)
  • 遇到与此相关的问题,当我将添加的列表绑定到下拉列表时,找不到文本字段和值字段,出现错误,请帮忙? @Gabriel
  • 没有代码就无能为力了。这看起来像另一个问题,所以你应该打开一个新问题。
【解决方案2】:

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

【讨论】:

  • 我不想为此使用 foreach
【解决方案3】:

除了 Gabriel GM 的回答之外,您还应该在第一个 if 之前声明变量。

【讨论】:

  • 非常感谢,但是这样做对吗?我只是一个新手
  • 没问题。这取决于您要达到的目标。您没有正确指定您的问题。是的,您可以使用 AddRange 合并两个列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2012-08-07
相关资源
最近更新 更多