I am trying to convert a few CASE statements in a SQL query to LINQ and in need of assistance in doing so.
Here is part of the SQL statement with the CASE statements:
SELECT dt.DisplayText, CASE WHEN fsh.FieldName = 'SiteId' THEN 'SiteName' ELSE fsh.FieldName END as FieldName, fsh.FieldName, fsh.[Action], CASE WHEN fsh.FieldName = 'SiteId' THEN so.SiteName ELSE fsh.OldValue END as OldValue, CASE WHEN fsh.FieldName = 'SiteId' THEN sn.SiteName ELSE fsh.NewValue END as NewValue, fsh.OldValue, fsh.NewValue, u.UserName, fsh.ModifiedDate, fs.ProgramGroupYear, fs.CustomerId
Part of LINQ with the CASE statements. I put the CASE statements in here as placeholders. Obviously those statements in LINQ won't work.
public async Task<IEnumerable<HistoryRecord>> GetHistoryRecords(int documentTypeId, int programGroupYear, int customerId, DateTime? from, DateTime? to, CancellationToken cancellationToken) { Guard.Zero(documentTypeId, nameof(documentTypeId)); var query = _context.FileStoreHistories .Join(_context.FileStores, fsh => fsh.FileStoreId, fs => fs.FileStoreId, (fsh, fs) => new { fs.CustomerId, fs.ProgramGroupYear, fs.DisplayText, **CASE WHEN fsh.FieldName = 'SiteId' THEN 'SiteName' ELSE fsh.FieldName END as FieldName,** fsh.FieldName, fsh.Action, *****CASE WHEN fsh.FieldName = 'SiteId' THEN so.SiteName ELSE fsh.OldValue END as OldValue, CASE WHEN fsh.FieldName = 'SiteId' THEN sn.SiteName ELSE fsh.NewValue END as NewValue,***** fsh.OldValue, fsh.NewValue, fsh.ModifiedBy, fsh.ModifiedDate, fs.DocumentTypeId } ....
If this is not enough code I can provide more. I appreciate any assistance I can get. Thank you