2014-06-23 34 views
1

我需要知道如何實現下面的邏輯來獲得LINQ的幫助下的項目列表,而無需使用foreach。此外,我需要在將項目添加到新列表後,從item列表中排除那些匹配項目。如何簡化代碼使用LINQ

代碼

List<StockResult> Stockres = new List<StockResult>(); 
foreach (var stkitms in item) 
{ 
    if (Db.Stk.Any(a => a.INo == stkitms.ItemNum)) 
    { 
     StockResult ss = new StockResult(); 
     ss.ItemNumber = stkitms.ItemNum; 
     ss.FileName = stkitms.FileName; 
     Stockres.Add(ss); 
    } 
} 

本任何解決方案將受到讚賞。

回答

7

你可以嘗試這一個:

List<StockResult> Stockres = item.Where(x=>Db.Stk.Any(a => a.INo == x.ItemNum)) 
           Select(x=> new StockResult() 
           { 
            ItemNumber = x.ItemNum, 
            FileName = x.FileName 
           }).ToList(); 
+0

'StokeResult'應該是'StockResult' – Sayse

+0

@Sayse非常感謝你!我只是糾正它。 – Christos

+0

幾乎正確,應該是'StoCkResult' :) – Loetn