2016-10-28 32 views
0

MVC 6とEF7を使用してVisual Studio 2015で残りのAPIを構築しています。私は必要ないくつかの特定のデータを返すSQLクエリがあります。Ccase Switchを使用したSQLクエリをLinq Lambdaに変換するには

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のケースセクションを実行する方法を知らない。

ご協力いただければ幸いです。

+0

解決策。 http://stackoverflow.com/questions/10761249/converting-sql-case-when-statement-into-c-sharp –

+0

可能重複:http://stackoverflow.com/questions/16191414/using-case-statement-in -linq-query – octavioccl

答えて

2
ArticleType = (
    jf.Acknowledgment == 1 ? 'Acknowledgment' : 
    jf.Foreword == 1 ? 'Foreword' : 
    // ect 
         ) 
+0

私の編集時には急いでいましたが、すでにコードの目的であなたの意見に投票しました。構文的に正しい(彼はビットフィールドと言う)コードはjf.Acknowledgment == trueのように見えるはずですか? "謝辞"または短いjf.Acknowledgement? "了承"。 –

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(); 
+0

それは今より良いはずです:) –

+0

私は今が好きです:D – Hogan

+0

ありがとうございました。 –