【问题标题】:Allow null values to be added to list允许将空值添加到列表
【发布时间】:2011-12-26 04:50:24
【问题描述】:

我已经删除了所有不必要的变量,并试图直接关注手头的问题。我有一个可以返回空值的变量:

var ppl = from p in xyz.new_ppl
          select new
          {
              p.name
          };

我查询它并将其添加到列表中:

foreach (var peeps in ppl)
{
    peopleList.Add(peeps.name);
    peopleNames = peopleList;
}

当我在 select 语句之前添加一个 where 子句来检查以使用此语句检查空值时,这有效

where p.name != null

我想要做的是允许添加空值。所以我尝试了 firstordefault 但没有用

name = p.name.FirstorDefault()

错误说我不能将字符转换为字符串。 peopleNames 是字符串类型的 setter、getter 方法。任何解决方法或解决方案?

【问题讨论】:

  • 为什么这个peopleNames = peopleList;在循环内?
  • 运行原始代码时遇到的错误是什么?忽略 p.name.FirstOrDefault() 的东西和你使用它时得到的错误;反正这不是你想要的。
  • @HackedByChinese 我现在离开那台机器,但我得到了一个空指针异常。当我检查数据时,我注意到 peeps.name 有一个我仍想传递给列表的空值。
  • 错误原因很明显,添加更多细节以便澄清。

标签: c# .net linq anonymous-types


【解决方案1】:
from p in xyz.new_ppl
select p.name;

【讨论】:

  • @aba:在stackoverflow论坛中,尝试为你的答案给出解释。这可能对新用户有帮助。
  • @aba 感谢您的回复,但正如我所提到的,我过于简化了这个问题。我需要检索多个值,例如 p.name、p.age 等……我想我试过了,但最终我必须创建匿名变量来检索多个属性,但我稍后会检查确定
【解决方案2】:

你想试试这样吗?

var ppl = from p in xyz.new_ppl
          select new
          {
              p == null ? null : p.name
          };

【讨论】:

  • @abatishchev 当我可以访问另一台计算机时,我一定会试一试。
  • @John:其实这是单声道的答案(右边的头像):) 我刚刚编辑了它(左边的头像)
  • @mono68:我的错……我会检查一下并告诉你。谢谢
  • @mono68: 刚刚试过,没用我得到一个无效的匿名类型成员声明错误。任何其他建议
  • 回过头来看看我刚才问的这个问题后,结论是这是 linq to sql 和 linq to entity 的正确答案。但是,它在我使用 linq to crm 的应用程序中不起作用。可能是因为实体内的嵌套关系。
【解决方案3】:

当您执行p.name.FirstorDefault() 时,这意味着您尝试获取字符串p.name 的第一个字符。所以编译器错误是正确的(我不知道为什么它不能将字符隐式转换为字符串——但那是另一回事了:))

但如果您还想添加空值,为什么不直接删除 where p.name != null

【讨论】:

  • 如果我删除 where p.name !=null,则不会添加空值。我得到一个空指针异常。我似乎无法弄清楚这一点,所以我通过设置一个空字符串变量代替所有空行值来处理空值。
  • peopleList 是什么类型的?你能粘贴堆栈跟踪和异常消息吗?
  • 人员列表是字符串类型。我目前无权访问代码。我得出的结论是在 select new { x= p.name, y = p.age...etc } 中,如果其中一个属性说 p.age 为空,就我而言,它会引发空异常。我尝试通过执行 y == null 之类的操作以各种可能的方式处理它? null : p.age 或 y = p.age ?? “null”,依此类推,无济于事。唯一有效的方法是实际包含 where p.age != null,这样即使 p.name 包含数据,它也会跳过整行并转到下一行。我会尽快粘贴堆栈跟踪
猜你喜欢
  • 1970-01-01
  • 2010-12-29
  • 2022-01-12
  • 2022-12-13
  • 2015-01-22
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多