1

BIReport と tblFormat の 2 つのテーブルがあります。プロジェクトで linq to sql を使用しています。

次のクエリと同じになるlinq to sqlを使用してデータを取得したい。

Select A.*,B.* from Report A inner join tblFormat B on A.ReportId = B.SettingId.

上記のクエリを使用すると、両方のテーブルからすべてのデータが取得されます。したがって、linq to sql を使用して両方のテーブルからすべてのデータを受け取る方法。

更新しました :

 <form id="form1" runat="server">
<div>
    <asp:GridView ID="grddata" runat="server"></asp:GridView>

</div>
</form>

更新 2:

私のクエリ:

 var QInnerJoin1 = (from p in objtest.Reports
                       join p2 in objtest.tblFormats
                       on p.ReportId equals p2.SettingID
                       where p2 != null  
                       select new { p, p2 }).ToList();

    grddata.DataSource = QInnerJoin1;
    grddata.DataBind();

My Error and Data![ここに画像の説明を入力][2]

ソリューション:

グリッド ビューにバインドする必要があるプロパティのクラスを作成しました。

public class TestLinqToSql
{
    public int ReportId { get; set; }
    public string ReportName { get; set; }
    public string FormatName { get; set; }
}

次に、以下のように linq を sql に更新しました。

  List<TestLinqToSql> objList = (from p in objtest.Reports
                                   join p2 in objtest.tblFormats
                                   on p.ReportId equals p2.SettingID
                                   where p2 != null
                                   select new TestLinqToSql()
                                   {
                                       ReportId = p.ReportId,
                                       ReportName = p.ReportName,
                                       FormatName = p2.FormatName
                                   }).ToList();


    grddata.DataSource = objList1;
    grddata.DataBind();

その作品は私のために働きます。ありがとう。

4

1 に答える 1

0

結果(ローカルメモリオブジェクト)をデータベースオブジェクトであるカテゴリと結合しようとしているために、エラーが発生していると思います。これを解決するには、ローカルの結果オブジェクトで Contains を使用し、結果とカテゴリの間の結合を削除する必要があります。次に、選択する直前に次のようになります。

// Your old code here
where result.Contains (sc.ID) // new code here    
select new { sc, st }).ToList();

アップデート

実際、要件と取得したコードを比較すると、次のようなものは機能しませんか?

var innerJoinQuery =
    (from A in Reports 
    join B in ChartSetting on A.ReportId  equals B.ReportId          
    select new  { A, B }).ToList();

それは構文的には

Select A.*,B.* from Reports A inner join ChartSetting B on A.ReportId = B.ReportId

新しいクエリで得たコードの多くは、結果の作成を含め、少し時代遅れのようです。

更新 2

投稿したアイテムのリストには、ChartSetting 値が NULL になっているため、データベースを本当に変更できない場合は、次のことを試してください。

var innerJoinQuery =
    (from A in Reports 
    join B in ChartSetting on A.ReportId  equals B.ReportId 
    where B != null  
    select new  { A, B }).ToList();
于 2013-10-04T07:43:24.607 に答える