2015-12-24 17 views
0

假設我們正在獲取一堆帳戶,但我們想要隱藏這些數字。有沒有辦法將每個元素的屬性設置爲A如何在使用EF獲取一組對象時更改單個屬性?

IEnumerable<Account> accounts = context.Accounts; 
foreach(Account accout = accounts) 
    account.Number = Guid.Empty; 
return accounts; 

我希望看到類似這樣的僞代碼。

return context.Accounts 
    .Alter(account => account.Number = Guid.Empty); 
+0

使用[projection](https://msdn.microsoft.com/en-us/library/bb386943(v = vs.110).aspx)。 – Jasen

+0

@Jasen謹慎地闡述一下?我訪問過提供的鏈接,但沒有更明智的... –

回答

2
IEnumerable<Account> accounts = context.Accounts; 
accounts.Foreach(account => { account.Number = Guid.Empty; }); 
return accounts; 
2

事情是這樣的:

var accounts = context.Accouts 
    .Select(a => new Account 
    { 
    Number = Guid.Empty, 
    Prop1 = a.Prop1, 
    // map other properties 
    }); 
+0

嗯,那就是我現在所做的。但是如果對象有很多屬性,我只需要改變一個屬性,那麼這種效果都是令人沮喪的......我希望在這裏做個短褲。 :) –

+0

編碼計劃或表現無效? –

+0

編碼時間。我需要爲一堆對象做這件事。他們很懶。 –

3

只需使用:

return context.Account.ToArray().Select(acc=> 
{ 
    acc.Number=Guid.Empty; 
    return acc; 
}); 

只能在記憶做到這一點,所以這將是不是數據庫選擇。

另一種方法是在數據庫中創建一個視圖,將此列作爲空指南並直接從中選擇。

+0

當。我**將**從DB做到這一點。我希望LINQy平滑... –

+1

AFAIK你不能將LINQ to Entity Framework中的「替換」邏輯移動到數據庫上,因爲這是對象上的操作。數據庫視圖或匿名對象選擇(明確選擇僅跳過號碼的所需字段)是您的最佳選擇 –

相關問題