0

両方のテーブル(モデルとメーカー)に存在する2つの値に基づいて、データベース内の2つのテーブルを結合しようとしています。さまざまな理由により、これらの値のデータベースにはfk関係がありません。

これまでのところ、私は次のものを持っています:

var modelManufacturer = DataContext.Assets_ND.Select(a => new {a.ModelNo, a.Manufacturer}).Distinct();

var masterPMs = DataContext.MasterPlannedMaintenances.Where(pm => pm.PlantId == model.PlantId);

var joined = modelManufacturer.Join(masterPMs.AsEnumerable(), a => new {a.ModelNo, a.Manufacturer},pm => new {pm.Model, pm.Manufacturer}, x => new {x.ModelNo, x.Manufacturer, x.Id});

これはコンパイルされず、エラーが発生します

エラー7メソッド'System.Linq.Queryable.Join(System.Linq.IQueryable、System.Collections.Generic.IEnumerable、System.Linq.Expressions.Expression>、System.Linq.Expressions.Expression>、Systemの型引数。 Linq.Expressions.Expression>)'は使用法から推測できません。タイプ引数を明示的に指定してみてください。

これは私が値を指定する方法について少し困惑しているところです、私はいくつかの組み合わせを試しました modelManufacturer.Join<Asset, MasterPlannedMaintenance....>が、インテリセンスは正しくないことを示唆しているようです、または少なくとも私がそれらを入れている順序は正しくありません。

私が間違っていること、または2つの文字列フィールドに基づいてこれらの2つのテーブルを結合し、左側のテーブル(Model、Manufacturer)から2つの値、右側(id)から1つの値を返すより良い方法は何ですか。

4

1 に答える 1

0
var joined = (from a in dc.table1
              join b in dc.table2 on a.id equals b.id into temp
              from t in temp.DefaultIfEmpty()
              select new {
                  a.Model,
                  a.Manufacturer,
                  t.ID
               });

これにより、2つのテーブルで左結合が実行され、テーブル1から2つの値が選択され、テーブル2から1つの値のみが選択されます。

于 2013-02-12T17:40:59.660 に答える