Хорошо, поэтому в этой ситуации я бы поместил представление в DBML или EDMX, а затем использовал linq в функции для создания списка соответствующих счетов-фактур. Сам код довольно прост, но, глядя на ваш запрос, я должен спросить: какова цель CHECKSUM?
Мне кажется, что вы просто получаете все счета, которые соответствуют электронной почте и язык и может просто иметь ваш запрос:
SELECT TOP 4
[DocumentNumber],
[DocumentDate],
[DocumentReference],
[SerialNumber],
[ProductCode],
[Description],
[Certificate]
FROM
[vInvoice]
WHERE [Email] = 'somemail@gmail.com' AND [Language] = 'FR'
GROUP BY [DocumentNumber], [DocumentDate], [DocumentReference]
ORDER BY [DocumentDate]
То, что я бы сделал для функции C#, выглядит примерно так:
public IList<Invoice> GetInvoices(string email, string language)
{
Using (EntityContext context = new EntityContext(ConnectionStrings.Connection))
{
IList<Invoice> results;
results = context.vInvoices
.Where(x => x.Email == email && x.Language == language)
.Select(x => new Invoice
{
DocumentNumber = x.DocumentNumber,
DocumentDate = x.DocumentDate,
DocumentReference = x.DocumentReference,
SerialNumber = x.SerialNumber,
ProductCode = x.ProductCode,
Description = x.Description,
Certificate = x.Certificate,
Email = x.Email,
Language = x.Language
})
.OrderBy(x => x.DocumentDate)
.ToList();
return results;
}
}