我正在使用MVC 6和EF7在Visual Studio 2015中构建一个rest api。我有一个SQL查询,它返回我需要的一些特定数据。它看起来像这样:
SELECT jf.JournalID, jf.FileID,
CASE WHEN jf.Acknowledgment = 1 THEN 'Acknowledgment'
WHEN jf.Foreword = 1 THEN 'Foreword'
WHEN jf.Preface = 1 THEN 'Preface'
WHEN jf.Logo = 1 THEN 'Logo'
WHEN jf.Specialty = 1 THEN 'Specialty'
WHEN jf.ContentsTable = 1 THEN 'Table of Contents'
WHEN jf.TitlePage = 1 THEN 'Title Page'
WHEN jf.AuthorIndex = 1 THEN 'Author Index'
ELSE NULL
END AS ArticleType
FROM JournalFile jf
WHERE jf.JournalID = 19 --PARAMETER
我需要将此查询转换为Linq,如下所示:
var results = (from s in _context.JournalFile
where s.JournalID == jID
select new IATTJService.Models.JournalFileTopLevel
{
JournalID = s.JournalID,
FileID = s.FileID,
ArticleType = (
<< Case options Here >>
)
}).ToList();
Case语句中的每个字段都是返回true或false的字节字段。我不知道如何在Linq中执行SQL的Case部分。
任何帮助都将不胜感激。
答案 0 :(得分:2)
ArticleType = (
jf.Acknowledgment == 1 ? 'Acknowledgment' :
jf.Foreword == 1 ? 'Foreword' :
// ect
)
答案 1 :(得分:1)
var results = (from s in _context.JournalFile
where s.JournalID == jID
select new IATTJService.Models.JournalFileTopLevel
{
JournalID = s.JournalID,
FileID = s.FileID,
ArticleType =
s.Acknowledgment ? "Acknowledgment"
: s.Foreword ? "Foreword"
// ..
: AuthorIndex ? "Author Index"
: null
}).ToList();