Wie füllen Sie eine Eigenschaft eines Objekts aus einer anderen Liste mit LINQ
Ich habe 2 Listen von Objekten. Hat man Werte, die andere hat Namen und Werte. Ich möchte zum nachschlagen der Werte in die andere Liste und schreiben Sie das Ergebnis auf pref.Name. Ich weiß, ich kann dies tun mit einer foreach-Schleife, aber ich nehme an, es ist ein guter Weg, es zu tun in LINQ. Ideen?
public class Preference
{
public string Category { get; set; }
public string Name { get; set; }
public string ItemValue { get; set; }
public int SortOrder { get; set; }
}
public class SAPReadOnlyItem
{
public string Category { get; set; }
public string Name { get; set; }
public string ItemValue { get; set; }
}
List<Preference> preferences = getExistingUserPreferences(UserID, ddlCategory.SelectedValue); //this list is just keys
List<SAPReadOnlyItem> sapReadOnlyItems = getSAPReadOnlyItems(ddlCategory.SelectedValue); //this list is names and keys
//i want to look up the name from sapReadOnly using the ID from preferences and write it into preferences[n].Name
//this works, but I want to write it into preferences[n].Name
var foobar = (from sap in sapReadOnlyItems
join pref in preferences
on sap.ItemValue equals pref.ItemValue
select new { asdf = sap.Name }).FirstOrDefault(); //instead of "select new" I want to write it into preferences[n].Name
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schlage ich vor, mit einem Lambda foreach
Können Sie tun, verbinden und zuordnen-Namen mit der standard-linq-Betreiber:
Ich kam mit dieser:
Ich glaube nicht, dass das, was Sie möchten, können Sie dies im speziellen c# - syntax, sondern du brauchst die reguläre Methode der Verkettung syntax. Zwei Optionen:
Methode #1:
Hier ist eine foreach-Erweiterungsmethode, wenn Sie wollen, um es mit Linq-syntax:
Verwendet:
Methode #2:
Wenn Sie möchten, dass die Aktualisierung der Einstellungen zurück, die Sie dies tun können: