2011-12-21 141 views
2

我已经删除了所有不必要的变量,并尝试将焦点直接集中在手头的问题上。我有一个变量,它可以返回空值:允许将空值添加到列表

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

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

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

这工作时,我添加where子句select语句前检查检查为空值使用此声明

where p.name != null 

我想要能够做的是允许添加空值。所以我尝试firstordefault但没有工作

name = p.name.FirstorDefault() 

错误说我不能施放一个字符字符串。 peopleNames是一个setter类型的字符串getter方法。任何解决方法或解决方案?

+0

为什么这个'peopleNames = peopleList;'在循环内部? – V4Vendetta 2011-12-21 11:11:53

+0

运行原始代码时得到的错误是什么?忽略p.name.FirstOrDefault()的东西和你在使用时得到的错误;这不是你想要的。 – HackedByChinese 2011-12-21 11:13:24

+0

@HackedByChinese我现在已经远离那台机器,但是我得到一个空指针异常。当我检查数据时,我发现peeps.name有一个空值,我仍然想传递给列表。 – 2011-12-21 13:41:07

回答

0

你想尝试这样吗?

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

@abatishchev当我有权访问另一台计算机时,我会定义尝试一下。 – 2011-12-21 13:49:14

+0

@John:其实这是单声道的答案(右侧的头像):)我刚刚编辑它(头像左侧) – abatishchev 2011-12-21 16:27:16

+0

@ mono68:我的坏..我会检查出来,让你知道。谢谢 – 2011-12-21 18:11:39

2
from p in xyz.new_ppl 
select p.name; 
+0

@ aba:在stackoverflow论坛中,尝试给出解答你的答案。这可能对新用户有所帮助。 – karthik 2011-12-21 12:06:07

+0

@aba感谢您的回复,但正如我所提到的,我简化了这个问题。我需要检索多个值,比如说p.name,p.age等...我想我尝试了这一点,但最终认为我必须创建匿名变量来检索多个属性,但我会稍后检查确定 – 2011-12-21 13:48:19

0

当你做p.name.FirstorDefault()这意味着你试图让字符串p.name的第一个字符。所以编译器错误是正确的(以为我不知道为什么它不能隐式地将字符转换为字符串 - 但这是另一回事:))

但是,如果你想要添加空值,为什么不删除where p.name != null

+0

如果我删除了where p.name!= null,则不会添加nulls。我得到一个空指针异常。我似乎无法弄清楚这一点,所以我通过设置一个空字符串变量来代替所有null roww值来处理空值。 – 2011-12-31 03:42:39

+0

什么类型是'peopleList'的?你能粘贴堆栈跟踪和异常消息吗? – 2012-01-11 18:45:39

+0

人物列表是字符串类型。我目前无法访问代码。如果其中一个属性表示p,我得出的结论是在选择新的{x = p.name,y = p.age ... etc}中。年龄是空的,就像我的情况,它抛出一个空例外。我试图通过做一些像y == null那样的方式来处理它。 null:p.age或y = p.age ?? “空”,如此等等无济于事。唯一有用的是实际包含p.age!= null的地方,这样即使p.name包含数据,它也会跳过整行并转到下一行。我会尽快粘贴堆栈跟踪 – 2012-01-14 08:43:19