SingleOrDefault 官方文件上說明
四種多載超過一個情況下都會拋出 Exception 的
簡易範例
用 LinqPad 來筆記語法
void Main()
{
string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };
string[] emptyFruits = {};
string defaultEmptyMessage = "no more fruits";
"---------- Single 範例".Dump();
fruits.Single(fruit => fruit == "apple").Dump("單一水果 apple 符合條件");
try
{
emptyFruits.Single();
}
catch (InvalidOperationException ex)
{
ex.Message.Dump("空值拋出 InvalidOperationException");
}
emptyFruits.DefaultIfEmpty(defaultEmptyMessage).Single().Dump("使用 DefualtIfEmpty 避免 exception 發生");
try
{
fruits.Single(fruit => fruit.Length > 15);
}
catch (InvalidOperationException ex)
{
ex.Message.Dump("沒有任何水果字母長度大於 15,拋出 InvalidOperationException");
}
"---------- SingleOrDefault 範例".Dump();
fruits.SingleOrDefault(fruit => fruit == "orange").Dump("單一水果 orange 符合條件");
emptyFruits.SingleOrDefault().Dump("空值,回傳預設值");
emptyFruits.SingleOrDefault(defaultEmptyMessage).Dump("空值,回傳指定預設值");
fruits.SingleOrDefault(fruit => fruit.Length > 10).Dump("長度大於 10 的水果");
fruits.SingleOrDefault(fruit => fruit.Length > 15 , defaultEmptyMessage).Dump("沒有長度大於 15 的水果,回傳指定預設值");
try
{
fruits.SingleOrDefault();
}
catch (InvalidOperationException ex)
{
ex.Message.Dump("超過一個水果符合條件,拋出 InvalidOperationException");
}
}
Single 範例執行結果
SingleOrDefault 範例執行結果
沒有留言:
張貼留言