0

我有这个Linq To SQL查询,它从database.The CustCategory 中获取客户类别。这里是查询。

public IList<string> GetAccountType()
        {
            using (var db = new DataClasses1DataContext())
            {
                var  acctype = db.mem_types.Select(account=>account.CustCategory).Distinct().ToList();
                if (acctype != null)
                {
                    return acctype;
                }
            }

        }

目前我收到一个错误,Not all code paths return a value.如果我总是确定数据库中存在该值,那么我是否需要检查null,如果我需要检查,null那么我该如何处理。谁能帮我这个。欢迎任何建议。

4

5 回答 5

8

由于Enumerable.ToList永不返回null(请参阅文档的返回值部分),您可以安全地删除.if

编辑:请注意,无论您的数据库包含什么,acctype永远不会为空:

  • 如果在数据库中没有找到值,则返回值将是一个空列表(与 不同null)。
  • 如果找到一条记录且其值为空,则返回值将是一个有效列表,其中包含一个值为空的条目。不过,列表本身不是 null.
于 2012-07-03T07:38:05.347 回答
4

这与 LINQ to SQL 无关,该方法GetAccountType()必须返回IList<string>. 您应该return acctype;稍后使用返回并检查此返回列表Any(),例如:

if(GetAccountType.Any()){
     //not empty
}
于 2012-07-03T07:41:58.047 回答
4

对于一个相当干净和可读的解决方案,这样的东西怎么样?:

注意,更新:删除了对 null 的检查,因为它显然没有任何效果)。

public IList<string> GetAccountType()
{
        var acctype = new List<string>();
        using (var db = new DataClasses1DataContext())
        {
            acctype = db.mem_types.Select(
                         account=>account.CustCategory).Distinct().ToList();
        }

        return acctype;
    }
于 2012-07-03T07:54:31.513 回答
3

如果出现以下情况会发生什么:

if (acctype != null)

一片空白?你的方法应该是return什么?

你需要退货

于 2012-07-03T07:38:04.827 回答
1

您需要从函数中返回一个值:

    public IList<string> GetAccountType()
            {
                using (var db = new DataClasses1DataContext())
                {
                    var  acctype = db.mem_types.Select(account=>account.CustCategory).Distinct().ToList();
                    if (acctype != null)
                    {
                        return acctype;
                    }
                }
                return acctype;
            }
于 2012-07-31T10:40:11.927 回答