Ich habe zwei verbundenen Unternehmen mit zusammengesetzten Schlüsseln:Wie beitreten zwei LINQ-Abfragen
public class Event
{
public string ID1 { get; set; }
public int ID2 { get; set; }
public DateTime EventDate { get; set; }
public string EventData { get; set; }
public string DocID1 { get; set; }
public int DocID2 { get; set; }
}
public class EventDocument
{
public string ID1 { get; set; }
public int ID2 { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Number { get; set; }
public virtual ICollection<Event> Events { get; set; }
}
Gibt es eine Möglichkeit, durch einige Kriterien zu filtern erste von ihnen beiden und Ergebnisse zu kommen, weil große Menge von Datensätzen?
Tatsächlich kann ich verwandte Ereignisse erreichen, wenn ich EventDocuments filter, aber ich brauche auch eine Möglichkeit, Event und EventDocument auf einmal zu filtern.
ich so zu tun, ich versuche:
var events = ModelContext.Events.AsNoTracking().Select(x => x);
events = events.Where(x => x.EventData.StartsWith(FilterCriteria));
var eventDocuments = ModelContext.EventDocuments.AsNoTracking().Select(x => x);
eventsDocuments = eventDocuments.Where(x => x.LastName.StartsWith(FilterLastName));
Und jetzt brauche ich diese Anfragen zu verbinden und ein Ergebnis bekommen - gefiltert und verbundenen Daten aus zwei Entitäten
Der Versuch, wie dies zu tun:
var result = eventDocuments.Join(events,
doc => new { doc.ID1, doc.ID2 },
ev => new { cross.DocID1, cross.DocID2},
(doc, ev) => new { EventDocument = doc, Event = ev });
Ja, um die Ereignisse zu eventDocuments beizutreten. Was ist das Problem? –
Haben Sie einen Fehler und don t understant es: Schwere \t-Code \t Beschreibung \t Fehler \t CS0411 \t Die Typargumente für die Methode ‚Enumerable.Join (IEnumerable , IEnumerable , Func , Func , Func ) kann nicht aus der Verwendung abgeleitet werden. Versuchen Sie, die Typargumente explizit anzugeben. –
Songaila
* Warum * fragen Sie nach Beitritt? Wenn du ein eventDocument lädst, lädt EF auch seine Events, vorausgesetzt du sagst es zu 'Include()' –