-4

次のMSSQLクエリをC#のLinqに変換する必要があるため

IQueryableを試しましたが、できませんでした。

そのように、条件が真であるかどうかをチェックする必要があり、テーブルとの結合に行くだけで済みます

事前に感謝します。

SELECT @sqlQuery = 'SELECT distinct tbl_1.col1 , tbl_1.col2, tbl_1.col3
     FROM tbl_1 vd  '        

if(@Condetion is not null)        
BEGIN        
  set @sqlQuery = @sqlQuery +'
    Inner Join         
  ( SELECT vml.*           
      FROM tbl_2 vml          
       INNER JOIN tbl_3 vm          
        ON tbl_1.IDCol = tbl_2.IDCol WHERE tbl_3.Name LIKE ''%'+@Condetion+'%'') A ON A.MessageID = vd.MessageID '         
 END        

  set @sqlQuery = @sqlQuery + 'INNER JOIN tbl_4 tbl 
  ON tbl.ColID12 = vd.ColID12
     LEFT OUTER JOIN            
       vdd_typeid tblVdd ON tblVdd.TypeId=tbl_1.TypeId            
 INNER JOIN  ...... '

 EXEC sp_executesql @sqlQuery

次のように私はLINQを試してみました

var query = from VD in _db.GetTable<tbl_1>() select VD ;

             if (!string.IsNullOrEmpty(Category.Trim()))
             {
                 query = query.Join((from VML in this._db.GetTable<tbl_1>()
                                      join VM in this._db.GetTable<tbl_2>() on VML.MessageID equals VM.MessageID
                                      where VM.Category.Name(Condetion),VD => new{VD.TypeId == [need write to write like this but can not VML.TypeId] }

            }

            query = query.Join(from TblVMS_def in this._db.GetTable<tbl_4>() on ........
4

1 に答える 1

1

実際に必要なものを解読するのは非常に困難です。私はここに行きましたが、エンティティ図のコピーと目的のデータの簡潔な説明があれば、はるかに簡単になる可能性があります。

私はあなたが欲しいと思うものを試してみました

var cat = string.IsNullOrWhiteSpace(Category) ? null : Category.Trim();
var query = from VD in _db.GetTable<tbl_1>()
            join tbl in _db.GetTable<tbl_4>() on tbl.ColID12 equals VD.ColID12
            join VM_I in _db.GetTable<tbl_2>() on VD.MessageID equals VM_I.MessageID
            from VM in VM_I.DefaultIfEmpty()
            where cat == null || VM.Category.Name.Contains(cat)
            select new { col1 = VD.col1, col2 = VD.col2, VD.col3 };

query.Distinct()その後、個別の値に対して行うことができます。

LinqPadを使用してクエリを実行することをお勧めできますか。操作がはるかに簡単で、結果の SQL も表示されます

于 2012-08-16T16:31:09.033 に答える