2012-09-26 35 views
3

我有以下情形: 爲int的列表:List<int> idsOnly = new List<int>(); 和對象的另一個列表應該把自己的ID匹配列表idsOnly使用LINQ,得到列表是另一個列表中的所有項目<int>

所有項目
var myList = db.Items.Where(item => idsOnly.Contains(item.ID.Value)) 
        .Select(a => new { a.Title }) 
        .ToList(); 

我只需要從myList中

任何幫助將不勝感激

+2

那麼,有什麼問題呢? –

回答

12

你的代碼的作品得到冠軍,但它會創建匿名OBJE名單CT,沒有字符串類型

而不是使用(a => new { a.Title }的,你只需要使用a => a.Title如果你僅僅只希望拿到冠軍:

var myList = db.Items.Where(item => idsOnly.Contains(item.ID.Value)) 
        .Select(a => a.Title).ToList(); 
0
var myList = 
    (from item in db.Items 
    where idsOnly.Contains(item.ID.Value) 
    select item.Title).ToList() 
1

您可以使用Join

var titlesInIdList = from item in db.Items 
        join id in idsOnly 
        on item.ID.Value equals id 
        select item.Title; 
var list = titlesInIdList.ToList(); 
0

你可以嘗試(如果問題轉換:轉換爲int你的ID,如果不是int型)

var myList = db.Items.Where(item => (idsOnly.Contains(Convert.ToInt32(item.ID.Value)))).Select(a => a.Title).ToList(); 

無需轉換

var myList = db.Items.Where(item => (idsOnly.Contains(item.ID.Value))).Select(a => a.Title).ToList(); 
+0

如果我想在我的結果列表中維護原始列表的順序,那麼我需要做什麼? – Sonali

相關問題