簡體   English   中英

具有LINQ查詢的實體框架

[英]Entity Framework with LINQ query

改變/改變2有什么區別?

using (var context = new NORTHWNDEntities())
{
    var change = context.Regions.Where(r => r.RegionDescription == "East").ToList();

    var change2 = (from r in context.Regions where r.RegionDescription == "East" select new {r.RegionID, r.RegionDescription }).ToList();

    foreach (var p in change2)
    {
        p.RegionDescription = "West";
    }
    context.SaveChanges();
}

當我試圖在foreach循環中對change2進行更新時出現錯誤:

屬性或索引器'......'無法分配 - 它是只讀的

它適用於lambda的早期版本。 我怎樣才能改變它?

 var change2 = (from r in context.Regions 
                where r.RegionDescription == "East" 
                select new {r.RegionID, r.RegionDescription }).ToList();

您將返回匿名類型。 匿名類型屬性是只讀的。 如果要更改值,則需要返回已定義的實際類型。

您可以new其他類似new Region或只返回r

var change2 = (from r in context.Regions 
                where r.RegionDescription == "East" 
                select r).ToList(); 


 var change2 = (from r in context.Regions 
                where r.RegionDescription == "East" 
                select new Region {.RegionID = r.RegionID, 
                                   .RegionDescription = r.RegionDescription }).ToList();

change2返回一個不可變的匿名類型。 要修改該值,您需要編寫:

var change2 = (from r in context.Regions where r.RegionDescription == "East" select r).ToList();

這相當於change1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM