Erstens ist dies für eine Legacy-Anwendung, so dass ich keine Logik radikal ändern kann.Linq Queryable - Verbinden von zwei Tabellen ohne Beziehungen
Ich habe Datenbank mit zwei Tabellen, die keine Beziehungen haben. Ich fragte, ob ich das ändere, aber mir wurde gesagt, dass ich das nicht kann.
Diese Tabellen können als
Create Table T1
[doc_id] [int] NOT NULL, -- Primary Key
[customer_acc_no] [varchar](16) NULL,
[gcompany] [varchar](30) NULL,
....
extra fields
und Tisch sind
Create Table T2
[UserURN] [int] NOT NULL, -- All three fields make up
[AccountNumber] [varchar](20) NOT NULL, -- the primary key
[Company] [varchar](50) NOT NULL,
....
extra fields
Wie Sie sehen können, nicht nur die Feldnamen unterschiedlich beschrieben werden, aber sie haben auch unterschiedliche Längen aufweisen.
Ich verwende die Repository und UnitOfWork Muster. Bis jetzt habe ich es geschafft, folgendes zu codieren:
private IRepository<T1> _t1Repository;
private IRepository<T2> _t2Repository;
Diese werden innerhalb des Konstruktors aufgefüllt.
Als nächstes verwende ich den folgenden Code, um ein abfragbares Repository zu konfigurieren.
var retVal = _t1Repository.Queryable();
Von diesem versuche ich, den folgenden Join hinzuzufügen.
from q in T1
join w in T2
on new { X1 = q.gcompany, X2 = q.Customer_acc_no }
equals new { X1 = w.Company, X2 = w.AccountNumber }
Ich denke es entlang der Linien würde:
var query = T1.GroupJoin(T2,
c => c.gcompany,
o => o.Company,
(c, result) => new Result(c.doc_id, result))
.GroupJoin(T2,
c => c.Customer_acc_no,
o => o.AccountNumber ,
(c, result) => new Result(c.doc_id, result));
, aber ich bin nicht sicher, wie alle Versuche bisher Fehler in Visual Studio zu beenden.
nur eine Idee, um die Tonhöhe, wenn alle drei Felder 1 Schlüssel bilden, können Sie eine neue Klasse enthält die Felder erstellen und einen benutzerdefinierten comparer für die Klasse. – RandomStranger
Können Sie bitte erklären, wie ich zu allen Dingen neu bin Linq – gilesrpa
Ich werde auf [this] (http://stackoverflow.com/questions/634826/using-an-object-as-a-generic-dictionary-key) verweisen) Frage Antwort. Es geht darum, eine Klasse als Schlüssel für ein Wörterbuch zu verwenden, aber ich bin mir ziemlich sicher, dass es für Ihren Fall anwendbar ist. – RandomStranger