从Entity Framework存储过程中的下拉列表中处理NULL

时间:2012-05-04 15:27:51

标签: c# entity-framework stored-procedures

我遇到了从存储过程返回的空值的问题。我有一个下拉列表,我想最初是空白的,但随后包含独特的街道类型。这样,用户可以将该字段留空以返回所有结果,或者开始键入并从可能存在的条目中获取建议。

列表是从存储过程中检索的唯一街道类型,该存储过程仅在所有地址的主表上执行DISTINCT查询。但是我在结果中得到一个NULL,并且我的下拉列表似乎一旦达到该值就停止显示结果。

我正在使用Entity框架并添加了返回一组字符串的存储过程,然后使用以下代码填充组合框。如果我在存储过程中没有保留任何排序,那么null就在某个地方的中间,我得到了一半的结果,如果我订购它,那么null就是我的组合框中没有结果。

 SideSewerDAL.SideSewerEntities entities = new SideSewerDAL.SideSewerEntities();
 comboType.DataSource = entities.GetUniqueStreetTypes();

我是否会这样做?我应该摆脱我的storedproc中的NULL,并以某种方式修复组合框以添加“空白”条目?或保持NULL但不知何故使组合框处理空值而不是阻塞!这是存储过程的代码

    public ObjectResult<global::System.String> GetUniqueStreetTypes()
    {
        return base.ExecuteFunction<global::System.String>("GetUniqueStreetTypes");
    }

1 个答案:

答案 0 :(得分:0)

如果存储过程返回字符串列表,则可以创建字符串列表,添加“”值,然后添加从sproc返回的范围。

List<string> values = new List<string>();
values.Add("");
values.AddRange(entities.GetUniqueStreetTypes());
comboType.DataSource = values;

至于处理空值,最好的解决方案可能最好包括“WHERE stType IS NOT NULL”