C# 如何将带有Ccase开关的SQL查询转换为Linq Lambda

C# 如何将带有Ccase开关的SQL查询转换为Linq Lambda,c#,entity-framework,linq,lambda,linq-to-sql,C#,Entity Framework,Linq,Lambda,Linq To Sql,我正在Visual Studio 2015中使用MVC 6和EF7构建rest api。我有一个SQL查询,它返回我需要的一些特定数据。看起来是这样的: SELECT jf.JournalID, jf.FileID, CASE WHEN jf.Acknowledgment = 1 THEN 'Acknowledgment' WHEN jf.Foreword = 1 THEN 'Foreword' WHEN jf.Pr

我正在Visual Studio 2015中使用MVC 6和EF7构建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
  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();
我需要将此查询转换为Linq,如下所示:

    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
  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();
var results=(来自_context.JournalFile中的s
其中s.JournalID==jID
选择新IATTJService.Models.JournalFileTopLevel
{
JournalID=s.JournalID,
FileID=s.FileID,
ArticleType=(
>
)
}).ToList();
Case语句中的每个字段都是返回true或false的字节字段。我不知道如何在Linq中执行SQL的Case部分


任何帮助都将不胜感激。

可能的解决方案。可能重复:可能的解决方案。可能重复:现在应该更好了:)现在应该更好了:)嘿,兄弟,我在编辑我的时很匆忙,我已经投票支持了你的代码意图。如果语法正确(他说位字段),代码应该看起来像jf.Acknowledgement==true?“确认”或更短的jf.确认?“感谢”。嘿,兄弟,我在编辑我的代码时很匆忙,我已经投票支持了你的代码。如果语法正确(他说位字段),代码应该看起来像jf.Acknowledgement==true?“确认”或更短的jf.确认?“确认”。
ArticleType = (
    jf.Acknowledgment == 1 ? 'Acknowledgment' :
    jf.Foreword == 1 ?  'Foreword' :
     // ect 
                         )