Звучит так, как вы, вероятно, хотите:
var next = table.Where(item => item.id > lastId &&
item.projects_ID == projects_ID &&
item.language == language)
.OrderBy(item => item.id)
.FirstOrDefault();
Или как выражение запроса:
var next = (from item in table
where item.id > lastId &&
item.projects_ID == projects_ID &&
item.language == language
orderby item.id
select item).FirstOrDefault();
Результатом будет null
, если совпадений нет (например, если выуже смотрю на последнее удостоверение личности).Это предполагает, что «следующий» означает «соответствующий элемент с наименьшим идентификатором, превышающим текущий».