При этом получает больше данных, чем необходимо, потому что вы звоните .ToList()
без фильтрации.Это означает, что вы выбираете все провинции из базы данных
Вместо этого учтите следующее:
var results = (from u in rv.tbl_user
where u.tbl_province.idtbl_Province == prov
select new {
u.firstName,
u.cellNumber,
u.tbl_area.Area,
u.ID,
u.tbl_province.Province_desc,
pic = (from p3 in u.tbl_pics
where p3.tbl_user.ID == u.ID
select p3.pic_path).DefaultIfEmpty("defaultpic.jpg").First()
}).ToList();
Чтобы ответить на ваш вопрос, .DefaultIfEmpty
выбирает значение, возвращаемое запросоми если он нулевой или пустой, он выбирает строку / объект, переданный в качестве параметра."defaultpic.jpg"
в этом случае.После этого необходимо просто убедиться, что перечисление (которое, вероятно, всегда будет состоять только из одного элемента) сворачивается в один экземпляр.