2017-08-26 49 views
-1

我的輸入框接受一個文本字符串,例如「abc,bcd」。我想要做的就是將文本字符串拆分爲單獨的文本abc和bcd,然後使用逗號作爲分隔符,然後使用linq將它插入到數據庫中,每個單獨的文本本身就是數據庫中的一個條目。
但是,我無法用下面的代碼實現它。我正在獲取isAdded=false。非常令我沮喪。任何人都可以在這裏向我解釋。如何使用linq將文本框項插入到數據庫中

var SourceSystemToBeInserted = this.TxtCreateAgencySourceSystem.Text.Split(',').Select(x => x.Trim()) 
     .Where(x => !string.IsNullOrWhiteSpace(x)) 
     .ToArray(); 


var agencySourceSystemDataOwnerToBeInsertedIntoGovernance = SourceSystemToBeInserted 
.Select(AgencySourceSystemToBeInserted => new Governance() 
{ 
    AgencyCode = AgencyCode + "_" + AgencySourceSystemToBeInserted, 
    GovernanceCode = AgencyCode + "_" + AgencySourceSystemToBeInserted + "_" + Constants.GOVERNANCE_ROLE_DATA_OWNER_VALUE, 
    RoleCode = Constants.GOVERNANCE_ROLE_DATA_OWNER_VALUE, 
    CreatedBy = EDHSession.Current.User.EmailAddress, 
    CreatedDate = dateTimeNow 
}) 
.Select(agencyGovernance => new 
{ 
    Governance = agencyGovernance, 
    IsAdded = userServiceProxy.CreateGovernance(agencyGovernance) 
}) 

回答

0

擴展方法Select返回IEnumerable<T>是懶執行類型實例。只有當您使用foreachToList()或其他方法

var sourceSystems = 
    this.TxtCreateAgencySourceSystem 
     .Text 
     .Split(',') 
     .Select(source => source.Trim()) 
     .Where(source => string.IsNullOrWhiteSpace(source) == false) 
     .Select(source => new Governance 
     { 
      AgencyCode = $"{AgencyCode}_{source}, 
      GovernanceCode = ${AgencyCode}_{source}_{Constants.GOVERNANCE_ROLE_DATA_OWNER_VALUE}", 
      RoleCode = Constants.GOVERNANCE_ROLE_DATA_OWNER_VALUE, 
      CreatedBy = EDHSession.Current.User.EmailAddress, 
      CreatedDate = dateTimeNow 
     }) 
     .Select(governance => new 
     { 
      Governance = governance, 
      IsAdded = userServiceProxy.CreateGovernance(governance) 
     }) 
     .ToList() // here all Selects and Wheres methods will be executed actually 



var addedSystems = sourceSystems.Where(system => system.IsAdded) 
           .Select(system => system.Covernance) 
           .ToArray(); 
+0

我想你的答案枚舉它

您提供lambda表達式的實際執行將被執行,但我仍然得到錯誤。謝謝。 – Hero1134

+0

你的意思是錯誤的?如果所有項目都包含「IsAdded = false」 - 那麼您應該顯示「CreateGovernance」方法。 – Fabio

+0

我發現了這個錯誤。這是一些DB約束。 Nvm,非常感謝。嘿,法比奧,你對我很有幫助。希望我們能成爲偉大的編碼朋友。從你身上學到很多東西。 – Hero1134

相關問題