首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当一个类的字符串属性返回Null时,Linq抛出异常?

当一个类的字符串属性返回Null时,Linq抛出异常?
EN

Stack Overflow用户
提问于 2011-03-29 05:45:01
回答 3查看 1.7K关注 0票数 0

我有一个Linq查询,我选择它作为字符串,当然字符串可以包含null!

那么,如果我检测到null,有没有办法在我的Linq查询中抛出异常?

我可以用一个不允许null的属性来修饰我的类吗?

我想将我的Linq查询包装在try catch中,一旦检测到null,它就会进入catch,我可以处理它。

编辑

这是我的Linq查询,目前它非常简单。我将扩展它,但这显示了基本形状:

代码语言:javascript
运行
复制
var localText = from t in items select new Items { item = t.name }

基本上item被设置为t.name,t.name是一个字符串,所以它可以是空的/ NULL这是完全合法的,因为它是一个字符串,字符串可以包含null。

所以如果它返回NULL,那么我需要抛出一个异常。实际上,能够抛出一个为NULL或空的异常会很方便。

我似乎还记得一些可以设置在属性顶部的属性,比如“不接受null”等等?

编辑

我想我找到了:http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.requiredattribute.aspx

这不允许null或字符串,所以我假设它抛出了一个异常,我已经在MVC中使用过它,但我不确定是否可以在标准类中使用它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-29 06:02:29

由于字符串为null并不是特别特殊,您可以这样做:

代码语言:javascript
运行
复制
var items = myStrings.Where(s => !string.IsNullOrEmpty(s)).Select(s => new Item(s));

更新

如果从XML文件中读取此数据,则应该查看LINQ to XML,并对XML文件执行use XSD to validate操作,而不是对不包含字符串的元素或属性抛出异常。

票数 1
EN

Stack Overflow用户

发布于 2011-03-29 05:49:23

您可以尝试有意地生成一个NullReferenceException:

代码语言:javascript
运行
复制
try
{
    //Doesn't change the output, but throws if that string is null.
    myStrings.Select(s=>s.ToString());
}
catch(NullReferenceException ex)
{
   ...
}

您还可以创建一个扩展方法,它可以附加到一个字符串上,如果为空,将抛出该字符串:

代码语言:javascript
运行
复制
public static void ThrowIfNull(this string s, Exception ex)
{
    if(s == null) throw ex;
}

...

myString.ThrowIfNull(new NullReferenceException());
票数 0
EN

Stack Overflow用户

发布于 2011-03-29 05:59:13

为什么要在这种情况下抛出异常?这听起来像是为了一开始就不应该发生的事情而把婴儿和洗手水一起扔掉。

如果您只想检测是否有null/空的项:

代码语言:javascript
运行
复制
int nullCount= items.Count( x=> string.IsNullOrEmpty(x.name));

如果你想过滤掉它们:

代码语言:javascript
运行
复制
var localText = from t in items where !string.IsNullOrEmpty(t.name) select new Items { item = t.name };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5465450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档