簡體   English   中英

LINQ根據行中的其他單元格選擇DataGridView中的某個單元格

[英]LINQ Select certain cell in DataGridView depending on other cell in row

我是LINQ的新品牌,我正在嘗試在我目前的業余愛好項目中使用它。 我有一個datagridview ,其中每行的第一個單元格是datagridviewcheckbox ,第四個單元格是一個字符串。

如果選中該復選框,我需要將第4個單元格的值添加到列表中。

起初我嘗試過:

var selectedID = from c in multiContactLookup.SelectedCells.Cast<DataGridViewCell>() 
                              select multiContactLookup.Rows[c.RowIndex].Cells[4].Value;

這不起作用,因為檢查的單元格是以編程方式取消選擇的,因此c絕不是值。

然后我嘗試了:

var sel2 = from r in multiContactLookup.Rows.Cast<DataGridViewRow>()
                       where r.Cells[0].Value is true select r.Cells[4].Value;

但不知怎的,我的語法錯了。

使用LINQ,如何選擇檢查第一個單元格的行,然后選擇第一個單元格的值? 我是否必須將其拆分為兩個集合?

謝謝!

我認為這應該有效:

IEnumerable<string> values = multiContactLookup.Rows.Cast<DataGridViewRow>()
    .Where(row => (bool)row.Cells[0].Value)
    .Select(row => (string)row.Cells[3].Value);

也許不是你一直在尋找的答案,但......

DataGridView (作為大多數win-forms控件)不是從LINQ開始的最佳源代碼。 大多數集合都沒有實現正確的IEnumerable<T>接口。 這就是你需要Cast()解決方法的原因。

通常,嘗試將應用程序行為從控件移到數據中。 也許你的網格連接到DataTable 在這種情況下,請注冊DataTable的事件以獲取更改的數據,並使用DataRow的值,而不是DataGridViewRow及其單元格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM