[英]How do I convert SQL Query with Ccase Switch to Linq Lambda
我正在使用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的Byte字段。 我不知道如何在Linq中執行SQL的Case部分。
任何幫助,將不勝感激。
ArticleType = (
jf.Acknowledgment == 1 ? 'Acknowledgment' :
jf.Foreword == 1 ? 'Foreword' :
// ect
)
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.