簡體   English   中英

如何通過C#中的值將listView中的項目分組?

[英]How to group items in a listView by a value in C#?

我有一個listView,我想對共享相同ID但SysDate不同的項目進行分組,因此,我不想顯示具有相同值和不同日期的多行,而僅當ID更改時才顯示多行。

例:

由此:

ID | Sysdate
1  | 12:00
1  | 12:01
1  | 12:02
2  | 12:03
2  | 12:05

為此,只有Sysdate更改同一行:

ID | Sysdate
1  | 12:00
2  | 12:05

就像如果當前添加的項目與listview中已經存在的當前項目相同,則僅更改同一行中的sysdate ,否則,請在listview添加該新行。

如上所述,您的問題無法回答。 Windows ListView存在“分組”的概念(例如,如果您打開“我的電腦”並選擇“視圖”->“內容”,則是在Windows資源管理器中看到的內容),但我認為這不是事實你要記住。 除了“分組”的概念外,沒有其他可以對ListView執行的已定義“分組”操作。

您的問題無助於定義分組的含義,因為對於每組id(1,2),您都選擇了一個sysdate來任意顯示。 (對於id = 1的情況,您選擇了12:00,位於id = 1的第一行,但是對於id = 2的情況,您選擇了12:05,位於id = 2的第二行2.)

我建議您考慮對數據集的屬性進行分組,而不是對ListView的屬性進行分組。 換句話說,首先要仔細考慮分組的含義,然后提出對數據集執行分組的代碼,然后將分組數據集提供給ListView ListView可能對您的分組概念一無所知。

var obj = objTest.OrderBy(x => x.ID).GroupBy(x => x.ID).Select(g => new {g, count = g.Count()}).SelectMany(t => t.g.Select(b=>b).Zip(Enumerable.Range(t.count, 1), (j, i) => new {j.Sysdate, j.ID}));

如果您的數據對象有一個ID和一個sysdate,這就是您如何顯示它們,則無法對其進行分組。 現在,如果您的數據對象具有一個ID和一個sysdate列表,則在ListView中每個ID僅出現1次,而每個ID則得到一個sysdates列表。 您將必須為此編寫自己的ViewCell。

如果從查詢中獲取數據對象,則必須自行格式化數據對象。

暫無
暫無

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

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