Давайте начнем с простого примера класса:
public class Foo
{
public DateTime Date { get; set; }
public decimal Price { get; set; }
}
Затем создайте список:
List<Foo> foos = new List<Foo>;
Я хотел бы вернуть отформатированную цену или «N / A» одного элемента в списке на основе даты, поэтому, например, я мог бы написать:
Foo foo = foos.FirstOrDefault(f => f.Date == DateTime.Today);
string s = (foo != null) ? foo.Price.ToString("0.00") : "N/A";
Я хотел бы объединить вышеупомянутые 2 строки наподобие следующего:
string s = foos.FirstOrDefault(f => f.Date == DateTime.Today).Price.ToString("0.00") ?? "N/A";
Однако, это не дает того, чего я хочу, потому что, если (f => f.Date == DateTime.Today)
не возвращает Foo, тогда выдается NullReferenceException
.
Следовательно, возможно ли с помощью LINQ создать всего 1 оператор для возврата отформатированной цены или «N / A»?