将SQL(LEFT OUTER JOIN)转换为LinQ

时间:2014-02-19 15:06:33

标签: sql linq

有人可以将下面的原始sql转换为linq吗?

_sql= " SELECT tbl_book.*, tbl_time.tt_scope, tbl_time.tt_time "+
      " FROM tbl_time "+ 
      " LEFT OUTER JOIN tbl_book ON tbl_time.tt_time = tbl_book.book_time "+
      " AND (tbl_book.ppt_id=@ppt_id AND tbl_book.fct_id=@fct_id "+
      " AND tbl_book.book_date=@book_date)";

1 个答案:

答案 0 :(得分:0)

如果

var ppt_id_param = "@ppt_id";
var fct_id_param = "@fct_id";
var book_date_param = "@book_date";

是我们的参数,你的背景是这样的:

TestEntities DBContext = new TestEntities();

你的linq查询就像:

var query = (from time in tbl_time
             join book in tbl_book on time.tt_time equals book.book_time 
                 into joinedList
             from book in joinedList.DefaultIfEmpty()
             where book == null ? 
                 true :
                 (
                      book.ppt_id == ppt_id_param &&
                      book.fct_id == fct_id_param &&
                      book.book_date == book_date_param &&
                 )
             select new {

                 time.tt_scope,
                 time.tt_time
                 book
             })
             .ToList();