2

私のプロジェクトでは、linqを使用して1つの行の値を選択する必要があります

try
{
return database.Employees.Where(x => id.Equals(x.ID)).Single();
}
catch (InvalidOperationException Ix)
{
    throw;
}

これを使用すると、エンティティオブジェクトを介して対応する行の値を取得しますが、結果セットが空の場合はエラーがスローされます。問題はプロジェクトにあります。例外をログに記録する必要があります。例外なくこのコードを管理するにはどうすればよいですか。

4

2 に答える 2

5

結果がない場合に例外をスローするために文書化Single()されているものを使用しています。その動作を望まない場合は、その方法を使用しないでください:)

使用SingleOrDefault()する場合、結果がない場合はnullを返します。ただし、複数の結果がある場合でも例外がスローされます。FirstOrDefaultまたは、これを回避するために使用できます。

Single/にも述語を指定できるため、最初に呼び出すSingleOrDefault必要はありません。Where

return database.Employees.SingleOrDefault(x => id.Equals(x.ID));
于 2012-06-12T09:31:36.880 に答える
1
try
{
  return database.Employees.SingleOrDefault(x => id.Equals(x.ID));


}
catch (InvalidOperationException Ix)
{
  throw;
}
于 2012-06-12T09:34:36.377 に答える