Задача: в LinQ запросе вернуть единственное значение или значение по умолчанию если запрос не вернет ни одного элемента.
В принципе есть стандартные методы. SingleOrDefault возвращает значение по умолчанию и выбрасывает исключение если запрос вернул несколько элементов, FirstOrDefault не выбрасывает исключения, если запрос вернул несколько параметров и просто выдает первое значение. Но у них есть один недостаток - невозможно задать значение по умолчанию, которые они вернут в случае отсутствия результатов. Более того, возвращаемые ими значения невнятные и недокументированные, в основном null.
А если мы хотим например для строки сразу вернуть пустую строку или "не найдено"? В данном случае нам поможет метод DefaultIfEmpty, данный оператор добавит дополнительный фильтр на запрос, после чего можно вызвать простейший Single
string someString = _someTable.AsEnumerable() .Where(dataRow => dataRow.Field<int>("field_with_id") == someIntIdVariable) .Select(dataRow => dataRow.Field<string>("field_with_string")) .DefaultIfEmpty("НЕ НАЙДЕНО").Single();