0

Linq To SQL顧客カテゴリを取得するこのクエリがありdatabaseます。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

編集:データベースに何が含まれていても、 nullにacctypeなることはないことに注意してください。

  • データベースに値が見つからない場合、戻り値は空の​​リストになります(これはとは異なりnullます)。
  • 1つのレコードが見つかり、その値がnullの場合、戻り値は、値がnullである1つのエントリを持つ有効なリストになります。それでも、リスト自体はではありません null
于 2012-07-03T07:38:05.347 に答える
4

これはLINQtoSQLに関するものではなく、メソッド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 に答える