2010-06-23 55 views
-1

我怎樣才能返回列表循環選擇與linq語句。我需要List<List<T>>,但我不喜歡這種方法。我怎樣才能做到這一點?我如何返回列表循環選擇與LINQ監視datagrid?

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     IStockMaterial stockMaterials = new StockProcedure(); 
     dataGridView1.DataSource = stockMaterials.StockMaterialList(2); 
    } 
} 

interface IStockMaterial 
{ 
    List<StockMaterial> StockMaterialList(int ItemID); 
} 

public class StockProcedure : IStockMaterial 
{ 
    public List<StockMaterial> StockMaterialList(int ItemID) 
    { 
     using (StockProcedureDataContext stock = new StockProcedureDataContext()) 
     { 
      List<StockMaterial> listStockMaterials = new List<StockMaterial>(); 
      try 
      { 
       listStockMaterials = (from sm in stock.StockMaterials 
             select (from s in stock.StockMaterials 
             where (s.expirydate <= DateTime.Now && 
             s.expirydate.ToString() != "01/01/1900 00:00") && 
             s.chkexpirydate == true 
             select s)).ToList(); 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show("Hata:" + e.Message); 
      } 
      return listStockMaterials; 
     } 
    } 
} 
+0

如果我正確理解您的問題,那麼您可以使用Group BY並將每個組視爲父列表項。 – 2010-06-23 15:59:34

回答

0

不知道在哪裏的要求返回List<List<T>>從因爲你的方法簽名是簡單的公共List<StockMaterial>到來。

你可以降低上述所有到:

return 
    stock.StockMaterials 
    .Where(s => 
     s.expirydate <= DateTime.Now && 
     s.expirydate.ToString() != "01/01/1900 00:00") && 
     s.chkexpirydate) 
    .ToList(); 

我還要聲明常數爲魔術字符串。