Ich brauche Hilfe bei der Anordnung des Codes in .NET TPL Datenfluss. Hier ist der CodeBessere Verwendung von. NET Datenfluss
var finalBlock = new ActionBlock<Category_KeywordsToMatch>(x =>
{
List<Resume> Resumes = new List<Resume>();
using (var context = new IndepthRecruitDbContext())
{
Resumes = context.Resumes.Include("Candidate").ToList();
}
foreach (var res in Resumes)
{
var keywords = FindKeywords(x.KeywordsToMatch, res);
if (keywords.Count > 0)
{
matchedCandidates_dataflow.Add(new MatchedCandidate
{
Id = res.CandidateId,
Name = res.Candidate.Name,
Url = res.Url,
Uploaded = res.DateUploaded.ToShortDateString(),
MatchedKeywordsList = keywords
});
}
}
});
Dies ist der letzte Block meiner Kette. Hier ist die Aktionsblockeingabe Category_KeywordsToMatch. Dies ist eine Klasse, die eine Jobkategorie und eine Liste von Keywords enthält, die in einem Lebenslauf übereinstimmen. {Kategorie, Liste < Schlüsselwörter>}. Innerhalb Block verwende ich foreach Schleife, um durch eine Liste von Lebensläufen aufzuzählen. Gibt es ein besseres Design mit Datenfluss, wie Lebenslauf kann als unterschiedliche Eingabe geliefert werden. Der letzte Block ist der letzte Block für eine Kategorie. Ich muss Schlüsselwörter für mehrere Kategorien suchen.
Wenn Ihr 'Resumes' nicht ändert, können Sie die' WriteOnceBlock', oder Sie können es versuchen mit 'BroadcastBlock' passieren könnte, nimmt er den Delegierten Kopieren des Wertes – VMAtm
Danke für die Antwort. Ich möchte wissen, ob ich diesen letzten Block in einer Blockkette aufteilen kann. Ich bin ein Anfänger in TPL-Datenfluss und es gibt nicht viele Tutorials auf dem gleichen. Fortsetzungen ändert sich nicht. Ich dachte daran, ein Tupel eines Lebenslaufs und Category_KeywordsToMatch zu einem anderen Block zu liefern und dann das Endergebnis in weiteren Blöcken zu machen. @VMAtm kannst du mir bitte deinen Skype oder irgendeine andere ID geben, damit ich dich kontaktieren kann. – user3522311