Ich habe eine Liste von zwei Eigenschaften mit dem Namen Kanjis
:
und ich möchte das verwenden, um den Inhalt einer anderen Liste mit dem Namen zu aktualisieren PhraseSources
public class PhraseSource
{
[PrimaryKey]
public string Id { get; set; }
public int PhraseNum { get; set; }
public string English { get; set; }
public string Kanji { get; set; }
public string WordType { get; set; }
public string FrequencyA { get; set; }
}
durch Abgleichen von Kanji> Text und Aktualisieren von FrequencyA mit Code
Ist dies etwas, das mit LINQ durchgeführt werden kann, oder gibt es eine bessere Möglichkeit, dies zu tun, indem Sie durch jede der Zeilen der PhraseSource iterieren, nach einem passenden Eintrag in Kanjis suchen und auf diese Weise ein Update durchführen?
Hier ist der von Salva vorgeschlagene Code, den ich ausprobiert habe:
(from sa in source
join d in psDb on sa.Text equals d.Kanji
let temp = d.FrequencyA = sa.Code
select 0).ToList();
gibt Fehler:
ApplyFrequency.cs (14,14): Fehler CS1941: Der Typ eines der Ausdrücke in der Join-Klausel ist falsch. Die Typinferenz ist beim Aufruf von 'Join' fehlgeschlagen. (CS1941) (Herunterladen)
source.Join(psDb, s => s.Text, d => d.Kanji, (s, d) => d.FrequencyA = s.Code).ToList();
gibt Fehler:
ApplyFrequency.cs (21,21): Fehler CS0411: Die Typargumente für die Methode 'Enumerable.Join (IEnumerable, IEnumerable, Func, Func, Func)' können nicht aus der Verwendung abgeleitet werden. Versuchen Sie, die Typargumente explizit anzugeben. (CS0411) (Herunterladen)
Anmerkungen:
Ich musste diesen Code verwenden, als ich gebeten wurde, FrequencyA in int zu ändern:
var source = original
.Select(x => new
{
Text = x.Text,
Code = Convert.ToInt32(x.Code.Substring(2))
})
.ToList();
Sie können dies über die Syntax einer einzelnen Linq- Abfrage tun :
var source = new List<TextCodeClass>();
var dest = new List<PhraseSource>();
(from s in source
join d in dest on s.Text equals d.Kanji
let temp = d.FrequencyA = s.Code.ToString()
select 0).ToList();
oder über Methodensyntax :
source.Join(dest, s => s.Text, d => d.Kanji, (s, d) => d.FrequencyA = s.Code.ToString())
.ToList();
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen