2016-12-22 12 views
0

我在這裏遇到了一些技術挑戰。如何使內存數據與數據庫中的數據相交

我有一個列表,其中包含用戶類型的對象。

現在我必須使用linq執行某個操作,其中來自兩個不同表的數據必須與用戶名和Id的唯一組合相匹配。這種

東西(這是不是一個正確執行)

我被困在此實現了相當一段時間了。

其實我不能在這裏使用aUser.Contains(),因爲它必須是原始類型。

有人可以幫助我嗎?

IList<User> aUser = GetUser(); // this is a cached data 

    class User 

    { 

    string Username; 

    Guid id; 

    } 

    data = (from v in _dataContext.UserValues 
    join i in _dataContext.UserItems 
    on v.ItemId equals i.Id 
    where (aUser.Contains(v.Id) && aUser.Contains(i.UserName)) 
    select v); 

感謝

+0

所以使用兩個原始值列表。但要小心[this](http://stackoverflow.com/q/26198860/861716)! –

回答

0

如果你改變你的where子句以下,它應該工作...

where (aUser.Select(v => v.id).Contains(v.Id) 
    && aUser.Select(v => v.Username).Contains(i.UserName)) 

順便說一句,你可以提高你的LINQ的,如果您使用方法的語法,因爲你不需要自己做連接...

data = _dataContext.UserValues 
     .Where(v => aUser.Contains(v.Id) 
       && aUser.Contains(v.UserItem.UserName)) 

確切的語法將取決於你的模型是如何設置的,所以你最後可能需要v.UserItems.UserName,但你應該能夠看到如何做到這一點。正如你所看到的,代碼更清晰。

相關問題