使用LINQ更新属性的值

时间:2017-11-16 10:30:10

标签: c# linq

我有以下课程结构

public class OfferModelCollection
{
    List<OfferModel> offers = new List<OfferModel>();
}

public class OfferModel
{
     public int ID { get; set; }
     public ProviderModel Provider { get; set; }
     public ProviderType ProviderType { get; set; }   //Enum

}

public class ProviderModel : BaseModel, IIdentity
{
     public string ProviderCode { get; set; }
     public string ProviderName { get; set; }   
}

我现在正在尝试更新那些其Provider.ProviderCode与某个字符串值匹配的ProviderType offers。如何在LINQ中实现它?

这样的事情:

offersVM.Offers.Where(x=>x.Provider.ProviderCode.Contains("p10"))).ProviderType = ProviderType.Default;

2 个答案:

答案 0 :(得分:1)

您必须使用foreach(至少这是常见且最有效的方法)。

var toUpdate = offersVM.Offers.Where(x=> x.Provider.ProviderCode.Contains("p10"));

foreach(var x in toUpdate)
    x.ProviderType = ProviderType.Default;

使用LIN Q 查询数据源,而不是修改它!

答案 1 :(得分:0)

使用foreach

foreach (var item in offersVM.Offers.Where(x=>x.Provider.ProviderCode.Contains("p10")))
{
    item.ProviderType = ProviderType.Default;
}

Linq用于访问不变异的