LINQ還是很方便的

2022-07-17 17:30:16 字數 2588 閱讀 1392

很長時間沒有linq了,

除了知道linq外,

基本上都忘了。

昨天快下班時,

乙個專案要統計圖中的圖塊(blockreference)數量及位置資訊,

開始還想自己寫排序及分組的**,

忽然想到可以使用linq,

這使得**簡單了很多很多。

//使用linq排序、分組

var group = from blk in blks

orderby blk.name,blk.position.x,blk.position.y,blk.position.z

group blk by blk.name;

完整**如下:

大部分**是插入autocad**的,

如果把資訊輸出到命令列,

**會少很多。

**的列寬,

我是統計每一列文字的長度得出的,

所以**顯得複雜了些。

using system;

using system.collections.generic;

using system.linq;

using autodesk.autocad.databaseservices;

using autodesk.autocad.editorinput;

namespace modelingtools

//選擇要統計的塊

//這裡用過設定過濾器,我的圖里沒有物件,所以給省略了

promptselectionoptions pso = new promptselectionoptions();

pso.messageforadding = "\n選擇塊";

promptselectionresult psr = ed.getselection(pso);

if (psr.status != promptstatus.ok) return;

//拾取**插入點

//建立**

autodesk.autocad.databaseservices.table table

= new autodesk.autocad.databaseservices.table();

//設定**樣式

table.setsize(2, 5);

table.cells.textheight = textheigt;

table.rows[0].height = textheigt * 3;

table.rows[0].textheight = textheigt + 1;

table.rows[1].height = textheigt * 2;

table.rows[1].textheight = textheigt + 0.5;

//**名稱

table.cells[0, 0].textstring = "主要喬木統計表";

table.rows[0].borders.top.isvisible = false;

table.rows[0].borders.left.isvisible = false;

table.rows[0].borders.right.isvisible = false;

//標題行

table.cells[1, 0].textstring = "名稱";

table.cells[1, 1].textstring = "x";

table.cells[1, 2].textstring = "y";

table.cells[1, 3].textstring = "z";

table.cells[1, 4].textstring = "數量";

//拾取**插入點

//promptpointresult pr = ed.getpoint("\n點取**插入點");

if (pr.status == promptstatus.ok)

else

//獲取塊物件集合

listblks = new list();

using (transaction tr = doc.transactionmanager.starttransaction())

}tr.commit();

}//使用linq排序、分組

var group = from blk in blks

orderby blk.name,blk.position.x,blk.position.y,blk.position.z

group blk by blk.name;

array.foreach(group.toarray(), x =>

);});

using (transaction tr = doc.transactionmanager.starttransaction())

}//獲取文字長度,用來設定**列寬

//對中文貌似不太靈

double gettextlength(string str, double height)

else}}

}

結果如下:

微軟chart控制項,使用還是很方便。

在看圖示控制項大家不由的介紹起這個控制項好那個控制項開源,也沒那麼多的要求去,去研究那麼多控制項莫不如搞定乙個就好。什麼東西使順手就可以。下面介紹下微軟chart控制項,真是不錯。繪製圖示也很方便。view code 1 datatable datatable new datatable buyer...

Virtualbox 修改bios很方便

virtualbox是sun公司的乙個基於gpl的開源軟體,支援windows和linux,可以在虛擬機上安裝的系統有 windows hosts windows xp,all service packs 32 bit windows server 2003 32 bit windows vista...

確實還是字典法方便

好久沒有來充數了,廢話也是要寫寫的。終於稍微嘗到了一點oo的甜頭。因為一直用不好oo,一直逃避,能不用就不用。正則什麼的,都是沒辦法了才用。這次為了頁面和 的簡單易懂,在不重複list的問題上,還是選擇了字典法。apt vs tpt dim dictest as object set dictest...