我有 2 个对象列表。一个有值,另一个有名称和值。我想查找另一个列表中的值并将结果写入 pref.Name。我知道我可以用 foreach 来做到这一点,但我认为在 LINQ 中有一种很好的方法可以做到这一点。想法?
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
Run Code Online (Sandbox Code Playgroud)
我建议使用 Lambda foreach
preferences.ForEach(preference =>
{
var sap = sapReadOnlyItems.FirstOrDefault(s => s.ItemValue = preference.ItemValue);
preference.Name = (sap != null) ? sap.Name : string.Empty;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8753 次 |
| 最近记录: |