c# - 检查不同的空值

标签 c# silverlight linq

我尝试了很多不同的方法来执行此操作,但每次尝试此操作时都会引发空引用异常。

我正在尝试过滤字段中的值以获得该字段内唯一值的列表。它适用于没有缺失值的字段,但是当我在我知道有空值的字段上使用它时,它会抛出异常,所以我假设这就是我应该过滤的内容。

我最初的做法是循环遍历这些值并检查唯一值列表是否包含该值,但这需要很长时间,我想利用 Linq 的强大功能

List<Graphic> ReturnedGraphics = e.FeatureSet.Features as List<Graphic>;


IEnumerable<string> ValueSet = (
                                 from g in e.FeatureSet.Features
                                 where !uniquevalues.Contains((g.Attributes[_selectedField] == null ? "blank" : g.Attributes[_selectedField].ToString()))
                                 select g.Attributes[_selectedField] == null ? "blank" : g.Attributes[_selectedField].ToString()
                               ) as IEnumerable<string>;

if (ValueSet.Any())
{
    uniquevalues.AddRange(ValueSet);
}

我还应该补充一点,我向列表添加范围的原因是因为有 5000 个值从服务器传入,该服务器对要返回的值有限制,但是它适用于此,并且不应该对我想在这里做什么。

最佳答案

您不能.ToString() null 值。看起来你可能正在尝试这样做。 null 的候选者包括 lstbxFields.SelectedValueg.Attributes[someVal]

如何合理化您的代码,以便更容易捕获错误,并且您不会到处重复自己?

var selVal = lstbxFields.SelectedValue;
if(selVal == null)
{
    //act on this
    return; //or throw
}
var selectedValue = selVal.ToString();

var query=
    e.FeatureSet.Features
        .Select(feature => feature.Attributes[selectedValue])
        .Select(attr => attr == null 
                        ? "blank" 
                        : attr.ToString())
        .Where(attrVal => !uniquevalues.Contains(attrVal));

关于c# - 检查不同的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11874282/

相关文章:

c# - 读取屏幕点的像素颜色(高效)

c# - 电话号码中的正则表达式可选空格

c# - LINQ to XML C# 获取根元素属性

javascript - 调试从 JavaScript 调用的 .cs 文件

c# - 将设备添加到 Azure IoT 中心时出现协议(protocol)版本无效错误

silverlight - 深度缩放和Silverlight 4的实时图像切片

silverlight - Silverlight 可以包含 ActiveX 吗?

c# - Caliburn.Micro - 是否可以验证基于约定的绑定(bind)的异常?

c# - Linq 和 ListView 以及包含

c# - Linq 查询将重复项的子集减少为较大集合中的单个值?