[c#]短路 linq 查询 thowing null 错误

标签: Linq C#
发布时间: 2017/2/28 22:38:08
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

香港专业教育学院有一些想要此 linq 语句上班的困扰。我设置了使用 linq 查询搜索。想做什么是如果搜索是 null 或为空,它忽略过滤的那部分。因此建立了很多地方条款太短电路在哪里子句如下所示︰

tvContent.LoadContent(
    Live.Ringtones
        .Where(x => cbSeller.SelectedValue== null || 
               x.Property.SellerID == (int)cbSeller.SelectedValue)
        .Where(x => cbProperty.SelectedValue==null || 
               x.PropertyID == (int)cbProperty.SelectedValue)
        .Where(x => string.IsNullOrEmpty(tbContentID.Text) || 
               x.RingtoneID == ContentID)
        .Where(x => string.IsNullOrEmpty(tbContentName.Text) || 
               x.RingtoneName == tbContentName.Text).ToList());

但是当我这样做时老是空引用的问题。 cbProperty,是空的因而 selectedValue 显示 null 时调试,但它仍然称这是空引用的问题。我到底做错了?

解决方法 1:

你为什么把不成变 where 条款?

var ringtones = Live.Ringtones;

if (cbSeller.SelectedValue!= null)
    ringtones = ringtones.Where(x=> x.Property.SellerID 
                                     == (int)cbSeller.SelectedValue);

if (cbProperty.SelectedValue!= null)
    ringtones = ringtones.Where(x=> x.PropertyID 
                                     == (int)cbProperty.SelectedValue);

if(!string.IsNullOrEmpty(tbContentID.Text))
    ringtones.Where(x=> x.RingtoneID == ContentID)

if(!string.IsNullOrEmpty(tbContentName.Text) )
    ringtones.Where(x => x.RingtoneName == tbContentName.Text)

tvContent.LoadContent(ringtones.ToList());
赞助商