var multipartMemoryStreamProvider = await Request.Content.ReadAsMultipartAsync();
//默認只能接收4096KB的文件,超過這個大小的文件時便會報以下錯誤。
//Error reading MIME multipart body part
解決方案:
Html.TextBoxFor(model => model.AreaName, new {@class="header", @data_options = "multiline:true", @data_date_format="yyyy/mm/dd"})
關鍵在于把 @data-options 寫成 @data_options
@Html.TextBoxFor(model => model.StartDate, new { Value = String.Format("{0:yyyy-MM-dd}", Model.StartDate)})
問題System.Net.Mail下的SmtpClient來發送郵件,而System.Net.Mail only僅支持Explicit SSL
不要465端口,用25,不用EnableSsl = true;
{
static void Main(string[] args)
{
SmtpClient client = new SmtpClient();
client.Host = "smtp.exmail.qq.com";
client.Port = 25;
// client.Port = 465;
// client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("test@ms.com", "1234567890");
MailMessage mm = new MailMessage("test@ms.com", "user1@ms.com", "test", "test");
mm.BodyEncoding = UTF8Encoding.UTF8;
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
client.Send(mm);
}
}
最后在配置TFS郵件通知設置的時候端口改用25,不選擇SSL,順利解決問題。
SmtpClient發送郵件超時的異常參考:
了解更多
最近總為項目怎么管理費腦筋,每個流程和細節都得記錄和處理,所以結果就是找來了一些開源的、功能全的軟件來了,做下記錄,各位有什么不同軟件推薦的也可以在博客留言討論。
Redmine
Redmine是用Ruby開發的基于web的項目管理軟件,是用ROR框架開發的一套跨平臺項目管理系統,據說是源于Basecamp的ror版而來,支持多種數據庫,有不少自己獨特的功能,例如提供wiki、新聞臺等,還可以集成其他版本管理系統和BUG跟蹤系統,例如SVN、CVS、TD等等。這種 Web 形式的項目管理系統通過“項目(Project)”的形式把成員、任務(問題)、文檔、討論以及各種形式的資源組織在一起,大家參與更新任務、文檔等內容來推動項目的進度,同時系統利用時間線索和各種動態的報表形式來自動給成員匯報項目進度。
TeamLab
TeamLab 是一個免費開源的商業協作和項目管理的平臺。TeamLab 主要功能包括:項目管理、里程碑管理、任務、報表、事件、博客、論壇、書簽、Wiki、即時消息等等。
采用.net開發,目前版本6.5,編譯、安裝、部署與測試方法:
1、打開redistributable/asc文件夾,運行buildanddeploy.bat文件。2、根目錄下會看到_ci文件夾下多出一個deploy文件夾3.進入到serverice文件夾下,運行TeamLabSvc.exe。4、一切完成后,打開IE,輸入http://本機IP:8082,應該可以看到登錄界面了。
Endeavour Software Project Management
JAVA開發,(中文:奮進號項目周期管理系統)是一個功能豐富基于Web的軟件項目管理工具。Endeavour適合用來管理大規模的迭代和增量企業系統軟件項目,主要功能包括:用例管理、迭代開發、項目計劃、需求變更管理、缺陷跟蹤、測試用例、文檔管理和其他功能等
Project-Open
project-open采用TCL開發的基于Web的項目管理系統,它能幫助你的業務涵蓋領域,如客戶關系管理,銷售,項目規劃,項目跟蹤,協作,時間表,發票和付款等。
功能包括:
◆ 項目/方案
◆ 甘特圖
◆ 項目模板
◆ 項目計劃
◆ 項目跟蹤
◆ 項目報告
◆ 風險管理
◆ 財政管理
◆ 時間表
◆ 項目管理
◆ 定購單
◆ 發票和付款
◆ 人力資源
◆ 雇員薪水表
◆ 查詢管理
◆ 客戶
◆ 新聞
◆ 討論
◆ 聊天
◆ 維基
◆ 事物
Project.net
Project.net是一套強大、可擴展、可定制基于Web的項目管理系統,采用java開發,結構定的比較大
Plandora
Plandora 是一個需求變更和項目管理平臺,采用甘特圖進行任務計劃,項目周期存儲在知識庫中
Onepoint Project
Onepoint Project代表了一類新的項目領導軟件解決方案,不再讓你在易用性和功能性的選擇上左右為難。此外,它的不同的版本能滿足您的需求和業務的規模。
功能和特點
減少項目風險:通過集成解決方案提高可用性
最小的項目管理工作:管理項目模板和團隊
增加項目透明度:通過特設的監測,計劃與實際的比較
大大減少成本:通過它減少風險和管理,而且增加透明度
eGroupWare Community
已經收費
zentaopms
國產開源的項目管理軟件,資料很多
dotProject
DotProject是一個在1996年左右,基于Web,強大,小巧.被翻譯為了大約40多種語言,應用于100多個國家, 只要能夠跑AMP的OS,都可以(AMP指Apache,Mysql,PHP),它包含的模塊有:公司管理,項目管理,任務進度跟蹤(運用甘特圖),論壇,文件管理,日歷,通信 錄,備忘錄/幫助桌面,用戶與模塊的權限管理,主題管理。并采用模塊化設計以便于擴展。
最后,還推薦一些更多的文章,大家一起去研究下。
一個國外統計c#各類開源項目的網站:http://csharp-source.net/
國內有人統計的c#開源項目:http://alance.iteye.com/blog/693987
了解更多
一、AOP框架
Encase 是C#編寫開發的為.NET平臺提供的AOP框架。Encase 獨特的提供了把方面(aspects)部署到運行時代碼,而其它AOP框架依賴配置文件的方式。這種部署方面(aspects)的方法幫助缺少經驗的開發 人員提高開發效率。
NKalore是一款編程語言,它擴展了C#允許在.net平臺使用AOP。NKalore的語法簡單、直觀,它的編譯器是基于Mono C#編譯器(MCS)。NKalore目前只能在命令行或#Develop內部使用。NKalore兼容公共語言規范CLS(Common Language Specification),它可以在任何.NET開發環境中使用,包括微軟的Visual Studio .NET。
PostSharp讀取.NET字節模塊,轉換成對象模型。讓插件分析和轉換這個模型并寫回到MSIL。PostSharp使開發程序分析應用程序容易得 像分析代碼規則和設計模式,它使程序開發的思想變革為面向方面軟件開發(AOSD/AOD)思想。
AspectDNG的目標是為.NET開發人員提供簡單而功能強大的AOP-GAOP實現。它效仿java下的開源工具AspectJ 和 Spoon,成熟程度也很接近它們。
RAIL(Runtime Assembly Instrumentation Library) 開源項目可以在C#程序集加載和運行前進行處理控制調整和重新構建。C#在CLR中,我們已經能夠動態加載程序集并且獲得程序集中的類和方 法,RAIL(Runtime Assembly Instrumentation Library)的出現填補了CLR處理過程中的一些空白
SetPoint是一款.NET框架下的全功能(full-featured)AOP引擎.它著重為稱為語義切點(semantic pointcuts)的定義依賴RDF/OWL的使用.它的功能為一個IL-level,highly dynamic weaver&LENDL,一個引人注目的定義語言、、、、、、
DotNetAOP為 CLR language提供AOP 框架基礎屬性。
NAop是一個DotNet下的AOP框架。
AspectSharp是DotNet下的免費AOP框架,它以Dynamic Proxies和XML作為配置文件。
二、Ajax框架
Ajax.NET Professional (AjaxPro)是最先把AJAX技術在微軟.NET環境下的實現的AJAX框架之一。它在客戶端腳本之上創建代理類來調用服務器端的方法。
MagicAjax.NET是一款在ASP.NET下創建Web頁面提供AJAX技術的框架。它使開發人員很容易把AJAX整合到他們的頁面而不需要替換 ASP.NET控件或自己寫javascript腳本代碼。
Anthem.NET是為ASP.NET開發環境提供的開源AJAX工具包,它可以運行于ASP.NET 1.1和2.0。
三、工作流(workflow)
Workflow.Net是使用微軟.Net技術基于wmfc標準的創建工作流引擎。
NetBPM是JBpm移植到.net平臺下的一款開源工作流軟件。NetBpm可以很容易和.Net應用程序集成在一起,可以創建,執行和管理工作流程 序。
Bpm Tool支持將業務模型轉換成軟件模型。業務開發人員可以使用模型驅動的方法設計,實現,執行和跟蹤業務流程。因此開發人員能夠更容易的關注業務邏輯的變 化。
三、文本編輯
FCKeditor是一款功能強大的開源在線文本編輯器(DHTML editor),它使你在web上可以使用類似微軟Word 的桌面文本編輯器的許多強大功能。它是輕量級且不必在客戶端進行任何方式的安裝。
FreeTextBox 是一個基于 Internet Explorer 中 MSHTML 技術的 ASP.NET 開源服務器控件。這是一款優秀的自由軟件(Free Software),我們可以輕松地將其嵌入到 Web Forms 中實現 HTML 內容的在線編輯,在新聞發布、博客寫作、論壇社區等多種 Web 系統中都會有用途。
VietPad是一個功能完整的跨平臺的Java/.NET的Vietnamese Unicode開源文本編輯器。支持打開,編輯,打印,轉換,排序,和保存基于文本的Unicode格式的Vietnamese文件。
NetSpell是一款.NET框架下的開源拼寫檢查引擎。
PPC_edit是一款應用在Pocket PC上的開源文本編輯器,它支持TXT, RTF, HTML, WordML, DocBook 和 ZIP格式的文件,屏幕上會顯示國際標準的軟鍵盤。
四、博客(Blog)
NovaShare是一款Blog引擎,它使你創建基于交互式的web的新聞和論壇網站,很像WonkoSlice或Slashdot。管理員可以發布文 章和發起投票,瀏覽者可以創建用戶帳號,發表議論等等。
dasBlog是從BlogX 網上日志引擎發展而來。像Trackback ,Pingback 一樣增加許多附加的特征,有完整的Blogger/MovableType API支持,API注釋,完整的Radio-style模板定制,支持Mail-To-Weblog/POP3的附件和內嵌圖片,基于WEB的 DHTML,OPML,配置的編輯器。
DotText是一個被使用了數百個blogs的強勁的blog引擎。這是一個N-tiered應用的例子。
tBlogger是一個C#開發的完整的blog網站程序,使用XML配置。
五、 系統構建
.NETZ是一款免費開源工具,它可以壓縮和打包微軟 .NET 框架可執行文件(EXE, DLL)以使他們更小。更小的可執行文件占用的磁盤空間較少且因為讀取文件時對磁盤的訪問較少而使讀取數度更快。它和PE(portable executable)打包工具不一樣,.NETZ是使用 C# 編寫的存粹的 .NET 解決方案。.NETZ可以用來打包幾乎每一種 .NET 支持的語言編寫的程序。.NETZ支持 .NET EXE 和 非共享(non-shared)的 DLL 文件。壓縮過的程序能以相同的方式解壓縮這些對最終用戶是透明的。
NAntContrib為NAnt提供定制任務的工具。
Prebuild是XML驅動的一款跨平臺pre-build工具,使開發人員很容易就可以為IDE和.NET開發工具生成項目或構建文件。它支持 Visual Studio .NET 2002, 2003, 2005, SharpDevelop, MonoDevelop 和 NAnt。
BusyBeeBuilder是.NET平臺下功能強大,易于使用,可擴展的開源構建自動操作工具。
Draco.NET 是 Windows 服務應用程序。它的設計使其容易持續的集成新特性。Draco.NET監視你的源代碼儲存庫。當探測到你的項目有變化時自動重新創建項目并把包含變化列表 的創建結果發送到你的Email。
Build Studio為軟件的自動構件處理提供了一套完整的解決方案。
CruiseControl.NET是.NET平臺下的一款整合服務器。
NAnt類似Apache項目下的Ant,是.Net下的開源構建工具。適用在自動編譯.NET應用的場合,如.NET項目的每日構建(nightly build)。
五、圖表制作
ZedGraph是C#編寫的.NET類庫,提供了用戶控件和web控件。它可以創建2D的線性圖、條形圖和餅圖。它功能完整且有詳細的功能自定義,不過 使用默認的選項就足夠好用了。一款類似 PieChart, StackBar, LineChart的C#開源圖表組件。
NPlot是一款.NET下的開源圖表類庫.它值得稱道的地方是優雅且靈活的API設計.NPlot包含了Windows Form控件, ASP.NET控件和一個創建Bitmap圖片的類。還有一個可用的GTK#控件。
XSCharting是C#開發的圖表組件,提供了多種多樣的圖表選項。
DaveChart是一個免費的DotNet類庫。
NChart 提供了很多值得應用在商業,教育等多個領域的2 D圖表。
六、聊天系統
Dot Net Chat server是基于DotNet框架開發的聊天服務器和客戶端項目。
七、內容管理系統(CMS)
Ludico是C#編寫的居于ASP.NET 2.0的Portal/CMS系統。它的模塊化設計是你可以按照你希望的使用或開發網站功能。它里面有高級的用戶管理,一個所見即所的(WYSIWYG) 的編輯器等。
mojoPortal是一款C#開發的面相對象網站框架,它可以運行于Windows的ASP.NET 和GNU/Linux 或Mac OS X的Mono的平臺上。
Cuyahoga是C#開發的靈活的CMS / Portal 解決方案。它可以運行于Microsoft .NET 和Mono 平臺,支持SQL Server, PostgreSQL或MySQL作為底層數據庫。
Umbraco是一款在.net平臺下C#開發的開源內容管理系統,該系統效率,靈活,用戶界面都不錯。
Kodai CMS是.NET平臺下的一款功能齊全的內容管理系統。
Rainbow項目是一款使用Microsoft''s ASP.NET和C#技術開發的有豐富功能的開源內容管理系統。
NkCMS是使用ASP.net和Sql server 2000開發的內容管理系統。
Amplefile是一款內容管理系統,是.Net環境下的windows應用程序,使用了.Net remoting.
Go.Kryo是一個用ASP.NET(C#).NET 實現的簡單的內容管理系統,后臺數據庫使用Microsoft SQL Server 。
ndCMS是 ASP.net (C#)下的一個內容管理系統。它提供了用戶管理,文件管理,一個WYSIWYG編輯器,模板管理,拼寫檢查和內置的http壓縮。ndCMS的目標是提 供一個簡單而快速的方式部署.Net站點以節省你的時間和金錢。
八、代碼覆蓋 (Code Coverage)
NCover是.NET框架下的C#版本代碼覆蓋分析工具。NCover可以對程序進行 line-by-line 的代碼覆蓋統計。
九、論壇系統
YetAnotherForum可以作為ASP.NET開發的網站的論壇或是留言板。它使用MSSQL作為底層數據庫。
十、開發工具(IDE)
SharpDevelop是一個DotNet平臺下的免費開發工具,支持C#和VB.NET。
MonoDevelop是可以支持C#和其它符合.Net規范的開發語言的IDE。
C# Studio是 C#/Mono/GTK# 開發者的一個簡單的IDE。
十一、安裝制作
izfree是一套套免費的工具用于幫助創建使用Microsoft''''s Windows Installer 技術的安裝程序。使用izfree你可以為你的應用程序制作強勁的安裝程序。
Windows Installer XML (WiX)可以重XML源文件創建Windows程序安裝包的工具集。它支持命令行方式,開發人員可以把結合它來創建MSI和MSM安裝包一個可以和商業 軟件安裝產品相比的開源打包工具。
十二、IoC容器
Spring.net是從java的Spring Framework移植過來的。java的Spring包含了許多功能和特性,在當前的Spring.net都有提供。Spring.net最初發布的版 本包含了一個很有特色的IoC容器。
Castle是一組應用開發的工具,內含一個簡單的IoC容器。
StructureMap是.NET環境下的一個輕量級依賴注入工具,StructureMap也是一個靈活的、可擴展的通用“插件”機制的.NE
十三、Bug追蹤
BugNet是一款C#編寫的基于Web的開源Bug跟蹤系統。
BTsys是一款輕量級的開源桌面Bug跟蹤系統,是C#和ADO.NET實現。一個Bug記錄和跟蹤的解決方案,支持文件附件和注釋歷史。
BugTracker.NET是使用ASP.NET 和 C#開發的基于web的開源Bug跟蹤系統。需要SQL Server 或 MSDE支持。它安裝簡單,容易使用,功能強大。
BugBye是一款ASP.NET和C#開發的基于web的Bug跟蹤系統。
十四、日志工具
log4net是一個可以幫助程序員把日志信息輸出到各種不同目標的.net類庫。它可以容易的加載到開發項目中,實現程序調試和運行的時候的日志信息輸 出,提供了比.net自己提供的debug類和trace類的功能更多。log4net是從java下有卓越表現的log4j移植過來的。它是 apache基金資助的項目的一部分。
NLog是C#編寫的開源日志類庫,它的設計思想是使其簡單而靈活。NLog讓你處理診斷的日志消息,用相關信息擴充消息,依照你的選擇格式化日志消息和 把日志消息輸出到一個或多個目的地。
LogThis是為.NET應用程序提供的一款C#開源日志框架,它可以嵌入到應用程序之中。
AppLog是一個簡單的應用日志工具。它使用C#開發,且使用ByteFX MySQL 數據訪問庫.。
C#開發的可擴展日志工具,有高級消息隊列支持,可以異步使用。
CSharp Logger是apache繼log4net項目后設計的又一個日志工具。它用來向Windows的事件日志寫入debug、info、warn和 error四個等級的信息。
十五、網絡客戶端
.NET FTP Client是C#編寫的開源類庫。
.NET Telnet是微軟.NET Framework下的C#開發的開源telnet類庫。它的靈感來至Java Telnet Application。
metro這個項目是C#編寫的類庫,它提供了一套豐富的類使開發IP version 4, TCP, UDP and ICMP等工作更容易。它包含了有很有用的工具如包嗅探器,網絡分析工具例如路由跟蹤,ping等。
LJ.NET是LiveJournal站點的客戶端。它為LJ在線日志服務提供了簡單而強大的用戶接口。
NET VNC Viewer 是一款完全用C#開發的開源VNC觀察器。它兼容Smartphones, Pocket PC和Windows的電腦(.NET CF or .NET Framework)。它比起其它觀察器的優點是可以在Pocket PC上全屏顯示而且可以旋轉屏幕。
GVDownloader允許你從google videos, metacafe, putfile, youtube, break.com 和更多的地方快速下載內含的視頻和多媒體。它的包含一個強勁IE插件和位于你系統托盤的獨立程序。
DotNetOpenMail能夠使你在微軟.net框架開發的asp.net, WinForm應用程序發送Email。它是C#編寫的開源組件,它不需要使用System.Web.Mail類庫就可以容易的創建帶附件HTML和 Plain-text的Email。程序員不需要知道很多相關的細節就可以使用不同的字符集或不同的MINE編碼來創建 multipart/alternative,multipart/related和multipart/mixed的MIME消息。
DotMSN是一款獨立的開源類庫,它不需要和官方的MSN Messenger交互,因此不必安裝MSN Messenger就可以使用DotMSN和MSN Messenger服務通信.DotMSN是C#編寫的,所以.NET環境支持的語言都能夠使用.DotMSN類庫使用簡單而且實現方便。它靈活,堅固, 輕量級利于整合到任何應用系統.使用DotMSN的應用系統能實現從創建消息機器人到自定義客戶端等各種不同的功能.如果你的應用程序需要和 Messenger服務通信,DotMSN是一個不錯的工具.
SharpSSH使用C#實現了SSH2協議,它支持SSH, SCP 和 SFTP.
OpenPOP.NET一組和POP Servers通信的.NET類庫。
IceChat是為連接多樣的IRC Servers設計的Internet Relay Chat Client。
lphant是為edonkey/emule開發的開源客戶端程序。
.NET FTP Client C#開發的類庫。
OpenSmtp.net 是 C# 開發的開源SMTP組件。它不依賴.NET Framework 的System.Web.Mail 包中的類。允許開發人員使用不同于MS SMTP的SMTP 服務器且提供了web service而可以通過HTTP發送email。
網絡服務器
ODC(#)H是一款C#編寫的開源hub software,它功能強大,消耗的資源少且支持插件功能。
Dawn of Light (DOL)是第一個開源的Dark Age of Camelot (DAOC)游戲服務器,你可以創建自己的服務器且自己設計游戲內容。DOL使用.Net Framework框架的C#編寫,使用XML和MySQL存儲數據,支持Windows和Mono平臺。
NeatUpload可以讓ASP.NET開發人員把磁盤上的文件通過流的方式上傳并且可以監視上傳進度。它是開源的且在 Mono''s XSP/mod_mono和微軟的ASP.NET下運行得一樣好。包含2個自定義控件:*用戶可以通過INPUTFILE選擇一個要上傳的文件。
ProgressBar可以用進度條方式或彈出窗方式顯示上傳進度。當JavaScript可用時ProgressBar是用類似AJAX 的無刷新方式展現,但也允許JavaScript不可用的用戶見到上傳進度。
NMail ,C#開發的開源程序,提供SMTP 客戶端和服務器, POP3 和 IMAP4 服務器。
ftp://ftp.net/是使用C#編寫的開源多線程FTP程序。
CSharp Email Server C# Email Server是 Java Email Server (JES) 的C#版本。
PDF類庫
PDFsharp是一款可以讓.NET框架支持的任何語言很容易的創建PDF文件的類庫。
ASP.NET FO PDF 是一款C#編寫類似于ASP.NET服務器控件的控件。它接受DataTable 和一些其它參數來創建XSL FO,并使用NFOP (Apache FOP Port in J#) PDF Formatter來繪制一個類似PDF Report 的DataGrid 。今后將會增加更多的標簽來可以生成XSL FO 。
Report.NET 開源類庫包含了生成精確PDF文檔的類。它是.NET平臺下的C#編寫的,可以幫助你創建簡單的靈活的PDF文件。你可以從任何ADO.NET的 DataSet取得數據來創建PDF文檔。ASP.NET可以用Report.NET來創建動態的PDF響應頁面。
SharpPDF是可以用來簡單的創建PDF文件的C#類庫。它創建的文件百分白兼容PDF格式。
iTextSharp是一款開源的PDF操作類庫,使用它可以快速的創建PDF文件。http://hardrock.cnblogs.com/ 是一個關于 iTextSharp的中文Blog。
持久層框架
NHibernate是一個面向.NET環境的針對關系型數據庫的對象持久化類庫。 NHibernate來源于非常優秀的基于Java的Hibernate關系型持久化工具。 NHibernate從數據庫底層來持久化你的.Net對象到關系型數據庫。NHibernate為你處理這些,你不用自己寫SQL去數據庫存取對象。你 的代碼僅僅和對象關聯,NHibernat自動產生SQL語句,并確保對象提交到正確的表和字段中去.大量減少開發時人工使用SQL和ADO.NET處理 數據的時間. NHibernate可以幫助你消除或者包裝那些針對特定數據庫的SQL代碼,并且幫你把結果集從表格式的表示形式轉換到一系列的對象去。因此對于那些在 基于.NET的中間層的應用中,它們實現面向對象的業務模型和商業邏輯的應用,NHibernate是最有用的。
FileHelpers Library是一款C#編寫的開源 .NET 類庫。它使用簡單,很容易就可以從固定長度文件或界定記錄(CSV)讀/寫數據。它也支持從不同的數據存儲格式(Excel, Access, SqlServer)導入/導出數據。
Websharp是國人開源的一款開源持久層框架,它的目標是設計一個基于.Net的通用的應用軟件系統的框架,以簡化基于.Net平臺的 企業應用軟件的開發。目前,Websharp關注于企業應用軟件的以下幾個方面:1、數據庫訪問 2、 O/R 映射 3、 AOP 4、 分布式訪問
ObjectBroker是.NET平臺下的一款開源O/R映射框架。它支持對象緩存,1:1, 1:n 和 m:n的關聯映射等特性。
Gentle.NET是一款開源的與關系數據庫(RDBMS)無關的對象持久層框架,可以自動生成SQL和對象結構。它擁有一個SQL工廠 用來創建自定義查詢、DataView構建助手和卓越的性能和完善的文檔。
Ubik是C# 2.0下的ORM持久層框架,當前是WinForms應用程序開發提供的.它支持OPath的子集而可以進行面向對象查詢,且包含一個網絡事件系統.
NDal是一個數據提取層(DAL)框架,它可以運行在.NET和Mono環境下。
Persist.NET是C#編寫的一款完整的持久層框架。
ObjectBroker是.NET平臺下的數據庫對象/關系映射(O/R Mapping)框架。
iBATIS.NET幫助你的應用系統創建更好的持久層框架。
Advanced Data Provider是為ADO.NET提供的動態數據提供者。可以讓應用程序透明的訪問不同的ADO.NET 數據提供者。
OJB.NET是一款.NET平臺下的對象/關系映射(O/R Mapping)工具。
門戶系統
OmniPortal基于一種web-portal-kernel(Web門戶核心)的思想而構建的開源基礎框架,它解決了安全控制、主題 和本地化等。你可以基于 OmniPortal 來更容易的創建任意的Web應用系統(例如 ERP, CMS, CRM)。它支持Mono 和.Net 。對于Web開發人員來說,OmniPortal為他們提供了一款優秀的二次開發基礎類庫。
SharpNuke.NET是一款C#開發的基于 ASP.NET 的開源 Portal/CMS。最初是從流行的VB.NET開發的web portal系統DotNetNuke移植過來的的。以后的版本將會兼容 Windows和 Linux Mono。
Personal .NET Portal是一個基于Web的個人門戶系統。它試圖提供一種簡單的方式建立個人網站,頁面使用標簽和模板創建。
My Community Portal提供了一個統一的Internet門戶,作為論壇,群組,聊天,你自己的Email,搜索引擎,網絡目錄,個人主頁,投票還有更多的功能入 口。
剖析工具(Profilers)
Prof-It是一款獨特易用的C#程序剖析工具。當保持對一個最小量的源代碼的探測時,它為每一條語句測量執行頻率。
NProf不僅僅是成熟的剖析程序,也是一套可以用來創建其它功能齊全的剖析程序的完整API,以及用可視化的工具擴展的默認GUI。
NProfiler,.NET平臺下的一個應用程序剖析工具。
項目管理
SharpForge支持協作多個軟件項目的開發和管理,它為你的團隊提供類似 SourceForge 和 CodePlex的功能。SharpForge是C#開發的.NET 2.0開源項目。
User Story.NET是一個Extreme Programming 項目。
RSS和RDF工具
Rss Bandit是C#開發的開源RSS閱讀器,它內建多國語系,支持Atom 1.0以及其他各種的RSS feed格式。它畫面漂亮,擁有分頁瀏覽功能,軟件細部設置彈性度高。它的操作畫面直觀簡單易懂,有一個很好的Command模式和ListViewEx 來使用,可讓使用者很快的上手。
iPodder.NET是一款C#編寫的開源媒體收集器,它能自動幫你從互聯網上下載音樂,能幫你輕松地從成千上萬的音樂中選擇你喜歡的。 用它設置好訂閱RSS feeds后,只要節目一有更新,它就自動下載了,你不必大量的浪費時間自己手工下載。它還整合了iTunes,創建播放列表和iPod同步功能,你可以 用Apple iTunes或Media Player播放,也可以把音樂導入到你的iPod或其他MP3播放器中。
FeedExpress主要是讓你訂閱一些RSS/RDF資源,知名的如FeedExpress里的Subscriptions。它和 Outlook Express讓你訂閱一些新聞組是一樣的。
RSS.NET是一款操作RSS feeds的開源.NET類庫。它為解析和編寫RSS feeds提供了一個可重用的對象模型。它完全兼容RSS 0.90, 0.91, 0.92, 和 2.0.1等版本。
GtkSharpRSS是C#開發的開源RSS和RDF客戶端,它用于 Mono, Gtk#, 和 RSS.NET。它也可以通過內嵌于Mozilla的窗口來顯示內容。
Atom.NET是一款完全使用C#開發的開源類庫,它的目標是提供便捷的方法來操作Arom Feeds。它提供一個對象模型來寫入和解析Atom Feeds。它只兼容0.3Atom規范,可以運行于微軟.NET 1.x,Mono 0.29 或更高版本。
NRss是為微軟.NET框架和Mono下提供的開源類庫,它讀取RSS Feeds元素然后以樹型結構來展現對象關系。
Aggie是一個新聞收集器,它是桌面應用程序,可以下載最新的新聞并通過web頁面的形式呈現。
mail2rss是.NET下的 web service,它在你請求時檢查你的電子信箱并返回包含電子信箱里的消息的 RSS feed。它是完全用C#開發的開源項目,沒用使用任何第三方控件。
規則引擎
NxBRE是.NET平臺下的一款開源輕量級的業務規則引擎(aka Rule Based Engine),它由正向串行的推理引擎(forward-chaining inference engine)和XML驅動流控制引擎(XML-driven flow control engine)組成.它支持 RuleML 0.9 Naf Datalog 和 Visio 2003 建模。
SRE (Simple Rule Engine)是.NET下的一款輕量級的開源正向串行的推理規則引擎(forward chaining inference rule engine)。它容易理解,可以解決復雜的問題。
搜索引擎
NLucene是Lucene的.NET版本。
DotLucene,Lucene.Net開源項目轉向商業化后,DotLucene以Lucene.Net作為基礎繼續進行開發。
版本控制(CVS)
Porc是為CVS和項目管理工具提供了完整的圖形化界面,它在CVS的基礎上增加了一些有趣的功能。它是.NET平臺下用C#編寫的。
Sharpcvslib是C#語言編寫的CVS客戶端API。當前它為公共CVS命令提供了核心函數。
NetCvsLib是為.NET平臺下C#開發的一個CVS客戶端。它作為一個單獨的程序集而實現,因而可以很容易的集成到其它項目中去。
SQL客戶端
SqlBuddy是C#編寫的一款用于Microsoft SQL Server和MSDE的開源工具,使用它可以很容易的編寫SQL腳本。SqlBuddy提供的功能和查詢分析器的目的有些微不同,它傾向于幫助使用者編 寫SQL。
QueryCommander是一款開源的Sql editor,模擬微軟的查詢分析器,Visual Studio的環境類型。QueryCommander的特點包括類似IntelliSense功能,自動注釋,xml文檔模型,xml2data等。
SQL Buddy是一款有特色的免費MSDE / Sql Server IDE,它是用.NET框架的C#編寫。
Database Commander是Windows操作系統下的一款用戶界面友好的數據庫管理工具。
模板引擎
NVelocity 是一個以 .NET 為基礎的模板引擎。它允許任何人通過簡單而強大的模板語言來定義對象。
測試工具
NUnit一款單元測試框架,它可以應用于遵循.NET框架標準的所有語言下。NUnit最初是從JUnit移植過來的。NUnit完全使 用C#編寫且設計時考慮了多數.NET語言的特性,例如自定義屬性和其它反射特性。
NMock是一款.NET平臺下的基于動態代理的Mock模擬對象類庫,用于C#開發。Mock對象使測試更簡單,它測試單個組件或單個類 時不需要其它所有組件真正實現。也就是說我們可以僅僅只是測試一個類,比起測試一個完整的對象關系樹更容易查清楚Bug。Mock對象一般用于以測試為驅 動的開發當中。
TestDriven.NET是一款和Visual Studio .NET無縫結合的測試插件。它可以和NUnit, MbUnit 和 Team System緊密結合。
Rhino.Mocks源于EasyMock.Net,它試圖提供一種更簡單的方法去創建和使用mock objects且使你得到更好的重構支持。它結合了EasyMock.Net和NMock的方式。
Dot NetUnit實現了XUnit 測試框架,是.NET平臺下的單元測試組件。
EasyMock.NET是由Java實現的EasyMock到.net平臺的一個移植版本的一組類庫。它提供了一個簡單的方法用來模擬接 口和遠程對象。
dotunit是JUnit移植到微軟.net平臺的測試框架。它可以實現自動化測試。
NUnitForms是NUnit的擴展。它為Windows Forms應用程序提供單元測試和壓力測試,可以容易的用它為你的Windows Forms類進行自動化測試。
Web框架
NStruts 是java下大名鼎鼎的struts開源MVC框架的ASP.NET版本,是jakarta struts框架的一部分。
Maverick.NET是從Maverick移植來的.NET版本,是一款開源的 Web MVC框架.它專注于MVC邏輯,它支持豐富的模板和轉換技術。
MaverickLite是ASP.Net下的一款簡單的開源表現層框架。它在建立在Maverick.Net framework基礎上。它使用front controller的方式來處理請求。
Ingenious MVC ,基于.NET 2.0的構MVC結構的應用程序,它包含即開即用(out-of-the-box)的特性支持ASP.NET和Windows Forms應用程序.它也可以在大多數方法中擴展和定制.
Websharp是.NET平臺下的一款輕量級應用框架。
Email客戶端
GmailerXP是為Google的Gmail服務提供了全套的工具開源程序。在線所能做的GmailerXP都允許用戶做,它也整合了 你任何時候在Gmail需要的其它一些程序的特點(GML, Gmailto,等)。
RemoteCalendars是C#開發的為Outlook 2003/2007提供的一款開源 COM-.NET 插件。安裝完這款插件后,Outlook的用都可以用Outlook 2003/2007訂閱、重新讀取和刪除遠程iCalendar(RFC 2445)。
SharpWebMail是一款C#編寫的ASP.NET下的EMail客戶端。它通過POP3服務器接收郵件,通過SMTP服務器發送郵 件。它的配置很簡單(只需要在web.config 里面做幾個設置)。
Web測試
NUnitAsp是一款自動測試 ASP.NET頁面的開源工具. 它是從NUnit擴展來的。
Wiki引擎
Perspective是一款C#開源Wiki引擎,它使用戶可以很容易的合作進行編輯,鏈接和共享Web頁面,它里面有安全和分級的管理 環境。Perspective居于奇妙的Wiki思想,包含了其它一些有前途且效果好的特性。
DevHawk Wiki是一款.NET平臺下由C#實現的開源Wiki引擎。
ProntoWiki是使用VWD (Visual Web Developer)編寫的C#開源wiki引擎,ASP.NET 2.0 和 SQLExpress 2005作為后臺。Wiki引擎速度快且容易使用,提供了和 rich text editor 一樣的文本標記( text markup )功能。它可以自動通過web接口接收圖片和文件作為附件。另外,ProntoWiki的特點還有頁面可以在貼出或更新之前預覽,基于角色的用戶認證,使 用 web parts 自定義外觀和布局,歷史跟蹤,和功能查詢。
FlexWiki是一款使用.NET技術(C#和ASP.NET)編寫實現的開源多人協作的寫作工具。
Thufir提供了字處理和文檔鏈接功能。它類似Wiki-Wiki ,且它具有“所見即所得”的界面。它還可以通過和Word交互來利用Word的拼寫檢查功能。
XML解析
ODF Add-in for Microsoft Word是一款開源的XML轉換器,它提供的工具為在 Open XML Formats 和 Open Document Format(ODF)之間轉換提供了橋梁。作為第一款這類組件,ODF Add-in for Microsoft Word 2007使你可以在Word里打開和保存ODF文檔。
NDigester是Jakarta Commons-Digester 工具的.NET實現版本。提供了完整的對XML文檔的處理控制。
SAX.NET是用來操作XML的簡單的API。它是從最初在java上被廣泛使用的API移植來的。
多媒體工具
FreeImage是為開發人員提供的開源類庫項目,它支持多種流行的圖片格式(PNG, JPEG, TIFF, BMP等).FreeImage簡單,易用,快速,多線程安全,兼容所以32位的windows并且是跨平臺的(Linux和Mac OS X).
TVGuide是一款顯示通過簡單而清晰的接口下載的TV列表的Windows程序。
DirectShow.NET Library 這個類庫的目的是使你可以從.NET應用程序內部調用Microsoft''''s DirectShow的功能。它支持Visual Basic .NET 和 C#,理論上應該是可以支持任何.NET語言。
iTunes Agent是和iTunes一起使用的C#開源MP3播放器。它可以使得在播放MP3時,播放列表與MP3自動播放器同步。
MeGUI是一款基于ISO MPEG-4的全面的GUI解決方案。它可以支持使用MPEG-4 ASP (XviD & libavcodec MPEG-4)標準的mencoder,使用MPEG-4 AVC (x264) 標準的x264.exe 或 mencoder,使用(HE)AAC audio標準的BeSweet、Nero AAC encoder和使用MP4 muxing標準的mp4box。
OpenImageManager是一款C#開發的新的開源圖片管理器。它基于非常流行的圖片查看器ACDSee(TM)的思想設計,它的 功能有縮略圖生成,HTML相冊生成器,支持10種語言等等。
abrViewer.NET是C#編寫的可以批量瀏覽和輸出Adobe Photoshop的筆刷(.abr files)的開源工具。
MeWiG是使用.NET框架開發的Windows下的開源MEncoder(MPlayer的一個組成部分)。你能夠轉換成幾乎任何視頻 資源,無需要命令行操作。
VTK.NET是.NET包裝的Visualization Toolkit。你可以使用它來編寫C#、C++、Visual Basic 或 J#的Windows Forms應用程序。它包含在設計時可拖拽的Windows Forms控件。
SubtitleCreator使你可以為你的DVD創建對白字幕。它擁有先進的同步特性,DVD預覽,和一個簡單的所見即所得 (WYSIWYG)的編輯器。當然你也能夠修改現有DVD的對白字幕的定位和顏色。
Paint.NET是在Windows下使用C#編寫的一款出色的開源圖像編輯器。
MediaPortal試圖幫你把電腦變成一個高級的Multi-Media Center / HTPC。它允許你聽你喜歡的音樂&收音機,看你的video和DVD,觀看,確定和記錄實況電視等其它功能。MediaPortal是開源的系 統,你可以完全免費的獲得它。任何人都可以幫組開發MediaPortal 或者根據自己的需要把Media Portal 進行調整。
C#游戲
Exult是可以在現在的操作系統上面運行Ultima7的游戲引擎,它提供了一個地圖編輯器和其它的一些工具讓你制作屬于你自己的模型和 游戲.
Ch2r是第一款為光暈2(Halo 2)提供的開源模型編輯器。
這是一款從在Palm平臺上流行的Space Trader游戲移植的Windows版本。
EMU7800是C#編寫的一款Atari 2600/7800模擬器。
BooGame是面相對象的 CLS-compliant,開源2D游戲引擎框架。它提供了高級的硬件加速video,audio,keyboard,mouse,內嵌腳本和許多圖片 格式。它使用C#開發的,目標是支持.NET 1.1, 2.0 和 Mono 平臺。
RealmForge這款開源的.NET 3D游戲引擎前身是Visual3D.NET,它是一套使用C#、 .NET 2.0和XNA進行可視化設計和開發3D游戲、模擬軟件和交互式環境的框架和工具集。
Pocket Sudoku是 Pocket PC (Windows Mobile)上的數獨(Sudoku)游戲。它可以有五種不同等級的難度來創建數獨(Sudoku)迷題,解答正確任何迷題,都會用鉛筆標記。
CsGL在.Net框架下為OpenGL 1.1 - 1.4和許多擴展的支持提供支持.
文檔工具
NDoc 可以將 C#.NET 編譯生成的程序集和對應的 /doc XML 文檔,自動轉換成如 .NET Framework SDK 類庫文檔或者 MSDN Library 在線 .NET 類庫文檔形式的代碼文檔,讓您快速擁有專業級的類庫API 文檔。
腳本語言
Sharp Vector Graphics (SVG#)是.Net框架下C#開發的文檔對象模型。它幫助你在.Net平臺上進行SVG開發。
IronPython是.NET平臺上的Python的CodeName。它擁有一個完全動態的交互式解釋器,可以支持所有的.NET類型 庫,并且集成了.NET Framework的諸多優點,甚至可以用Python的類來擴展.NET類。IronPython遵從ECMA的CLI標準(ECMA-335),可以 運行在Microsoft .NET Framework和MONO上。
地理信息系統(GIS)
SharpMap是一款易于使用的地圖渲染器,它可以為Web和Windows應用程序渲染GIS數據。SharpMap是使用C#編寫, 基于.NET 2.0框架上開發的開源項目。
monoGIS將成為Mono平臺下的開源完整GIS。已經發布了internet mapserver,OGC WMS實現和一些工具像空間格式轉換。
NASA World Wind 是C#開發的個人電腦上的開源的3D圖形虛擬地球系統。它結合了美國國家航空航天局(NASA)從衛星拍攝的圖像,這些圖像應用于Blue Marble, Landsat 7, SRTM, MODIS 以及其它更多的地方。
其它C#開源項目
DockPanel Suite是一款開源的.Net Windows Forms開發環境下的??靠丶?docking)類庫。它模仿Visual Studio .Net的效果開發的。
wx.NET是基于.NET通用語言基礎結構 (CLI)的開源項目。它致力于開發一個基于.NET的GUI庫,它按照wxWidgets的類層次用C#編寫,可以在多種CLI下執行,包 括.NET,Mono,和DotGNU Portable.NET。
MMC .NET類庫是為Windows的MMC+Snapin開發提供支持而包裝的一套開源類庫。
DPAToolkit(Design Pattern Automation Toolkit)是應用設計模式設計應用程序的開源工具包,它有便捷的代碼生成,反向工程功能。拖拽(Drag and Drop)方式便捷的創建UML類圖。支持為代碼生成,反向工程編寫自定義插件。
mjbWorld 是一款開源的3D編輯器,它允許用戶通過圖形界面的選擇和拖拽方式來編輯圖形。它基于和應用X3D與VRML標準。該軟件目的用于利用建立開放免費程序建 立3D世界。同時它也可以用于其他免費開放軟件程序之間進行數據交換。mjbWorld有Java, C# 和C++ /Qt等版本。
MonoCalendar是.NET平臺下的開源日歷程序,它的目的是為Mac平臺之外的其它平臺提供一款類似iCal的日歷程序。
Data Tier Generator是一款微軟 .NET平臺下的開源項目,它為訪問SQL Server 2000而生成存儲過程的SQL Server 2000腳本和C#類。這些存儲過程包含了Insert, Update, Delete, Select, 根據PK的Select, 根據FK的Select的SQL腳本。
Finisar.SQLite是.NET框架下的一款為存取SQLite-Databases提供的ADO.NET Data Provider。
Math.NET的目標是為提供一款自身包含清晰框架的符號運算和數學運算/科學運算,它是C#開發的開源類庫。Math.NET含了一個 支持線性代數的解析器,分析復雜微分,解方程等等功能。
Ascii Generator dotNET (ascgen2)是一款把圖片轉換成高質量的ASCII字符組合(ASCII art - text)。第一個版本支持變形和粗體字體,和實時調節輸出。
GPSProxy是.NET Compact Framework下的開源程序。它通過COM口在Pocket PC之間拷貝GPS數據,可以把GPS數據格式從NMEA 0183轉換成Garmin GPS。它是基于.NET Fra的Windows版本。
FOP C# Port這是Apache居于java的 XSL-FO 格式轉換器的C#版本。它采用并擴展了XSL-FO標準使FOPs在可以嵌入.NET CLR管理代碼應用。
一、IT工具類網站
1、http://tool.lu/
在線工具是一個IT在線工具網站,IT能用的在線工具基本都在這里了
2、http://www.css88.com/
WEB前端開發包含各種前端類工具和技術類的文章
二、IT插件類網站
1、http://www.jq22.com/
jQuery插件庫這個網站提供各種jQuery特效的詳細使用方法,在線預覽,jQuery插件下載及教程
2、http://www.layui.com/
這是一個經典模塊化的前端框架網站
三、IT配色類網站
1、http://www.mb5u.com/tool/peise/
站長工具這個網站給我們提供了很多的配色方案,我們可以根據自己的需求選擇使用。我們可以輸入RGB獲取我們想要的配色。
2、https://color.adobe.com/zh/create/color-wheel
這個網站是Adobe公司寫的,提供了多重配色方案,我們可以點擊中間的顏色方案來搭配我們所需要的顏色。
四、IT圖標類網站
1、http://www.iconfont.cn/plus
Iconfont-國內功能很強大且圖標內容很豐富的矢量圖標庫,提供矢量圖標下載、在線存儲、格式轉換等功能。
2、http://www.easyicon.net/iconsearch/ios/
這個網站提供的圖標不是單一顏色的,而是設計好的顏色。而且所有的圖標都是免費使用的,點擊就可以下載。
五、IT素材類網站
1、https://unsplash.com/
素材網站我只給大家分享Unsplash這個網站,其他的我相信大家都知道,我就不多做分享了。這個網站是一個分享免費高質量照片的網站。
六、IT字體類網站
1、http://www.qiuziti.com/
這個網站是一個上圖片找字體的網站,只要你在圖片看的好看的字體,通過上傳圖片你就可以找到自己想要的字體。
2、http://font.chinaz.com/
站長素材也是一個不錯的字體查找網站,在這里也可以找到我們想要的字體
適用場景:分組數據,為我們查找數據縮小范圍。
說明:分配并返回對傳入參數進行分組操作后的可枚舉對象。分組;延遲
語句描述:使用Group By按CategoryID劃分產品。
說明:from p in db.Products 表示從表中將產品對象取出來。group p by p.CategoryID into g表示對p按CategoryID字段歸類。其結果命名為g,一旦重新命名,p的作用域就結束了,所以,最后select時,只能select g。當然,也不必重新命名可以這樣寫:
var q = from p in db.Products group p by p.CategoryID;我們用示意圖表示:
如果想遍歷某類別中所有記錄,這樣:
foreach (var gp in q) { if (gp.Key == 2) { foreach (var item in gp) { //do something } } }說明:在這句LINQ語句中,有2個property:CategoryID和g。這個匿名類,其實質是對返回結果集重新進行了包裝。把g的property封裝成一個完整的分組。如下圖所示:
如果想遍歷某匿名類中所有記錄,要這么做:
foreach (var gp in q) { if (gp.CategoryID == 2) { foreach (var item in gp.g) { //do something } } }語句描述:使用Group By和Max查找每個CategoryID的最高單價。
說明:先按CategoryID歸類,判斷各個分類產品中單價最大的Products。取出CategoryID值,并把UnitPrice值賦給MaxPrice。
語句描述:使用Group By和Min查找每個CategoryID的最低單價。
說明:先按CategoryID歸類,判斷各個分類產品中單價最小的Products。取出CategoryID值,并把UnitPrice值賦給MinPrice。
語句描述:使用Group By和Average得到每個CategoryID的平均單價。
說明:先按CategoryID歸類,取出CategoryID值和各個分類產品中單價的平均值。
語句描述:使用Group By和Sum得到每個CategoryID 的單價總計。
說明:先按CategoryID歸類,取出CategoryID值和各個分類產品中單價的總和。
語句描述:使用Group By和Count得到每個CategoryID中產品的數量。
說明:先按CategoryID歸類,取出CategoryID值和各個分類產品的數量。
語句描述:使用Group By和Count得到每個CategoryID中斷貨產品的數量。
說明:先按CategoryID歸類,取出CategoryID值和各個分類產品的斷貨數量。 Count函數里,使用了Lambda表達式,Lambda表達式中的p,代表這個組里的一個元素或對象,即某一個產品。
語句描述:根據產品的―ID分組,查詢產品數量大于10的ID和產品數量。這個示例在Group By子句后使用Where子句查找所有至少有10種產品的類別。
說明:在翻譯成SQL語句時,在最外層嵌套了Where條件。
語句描述:使用Group By按CategoryID和SupplierID將產品分組。
說明:既按產品的分類,又按供應商分類。在by后面,new出來一個匿名類。這里,Key其實質是一個類的對象,Key包含兩個Property:CategoryID、SupplierID。用g.Key.CategoryID可以遍歷CategoryID的值。
語句描述:使用Group By返回兩個產品序列。第一個序列包含單價大于10的產品。第二個序列包含單價小于或等于10的產品。
說明:按產品單價是否大于10分類。其結果分為兩類,大于的是一類,小于及等于為另一類。
適用場景:用于判斷集合中元素,進一步縮小范圍。
說明:用于判斷集合中是否有元素滿足某一條件;不延遲。(若條件為空,則集合只要不為空就返回True,否則為False)。有2種形式,分別為簡單形式和帶條件形式。
僅返回沒有訂單的客戶:
var q = from c in db.Customers where !c.Orders.Any() select c;生成SQL語句為:
SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax] FROM [dbo].[Customers] AS [t0] WHERE NOT (EXISTS( SELECT NULL AS [EMPTY] FROM [dbo].[Orders] AS [t1] WHERE [t1].[CustomerID] = [t0].[CustomerID] ))僅返回至少有一種產品斷貨的類別:
var q = from c in db.Categories where c.Products.Any(p => p.Discontinued) select c;生成SQL語句為:
SELECT [t0].[CategoryID], [t0].[CategoryName], [t0].[Description], [t0].[Picture] FROM [dbo].[Categories] AS [t0] WHERE EXISTS( SELECT NULL AS [EMPTY] FROM [dbo].[Products] AS [t1] WHERE ([t1].[Discontinued] = 1) AND ([t1].[CategoryID] = [t0].[CategoryID]) )說明:用于判斷集合中所有元素是否都滿足某一條件;不延遲
語句描述:這個例子返回所有訂單都運往其所在城市的客戶或未下訂單的客戶。
說明:用于判斷集合中是否包含有某一元素;不延遲。它是對兩個序列進行連接操作的。
string[] customerID_Set = new string[] { "AROUT", "BOLID", "FISSA" }; var q = ( from o in db.Orders where customerID_Set.Contains(o.CustomerID) select o).ToList();語句描述:查找"AROUT", "BOLID" 和 "FISSA" 這三個客戶的訂單。先定義了一個數組,在LINQ to SQL中使用Contains,數組中包含了所有的CustomerID,即返回結果中,所有的CustomerID都在這個集合內。也就是in。 你也可以把數組的定義放在LINQ to SQL語句里。比如:
var q = ( from o in db.Orders where ( new string[] { "AROUT", "BOLID", "FISSA" }) .Contains(o.CustomerID) select o).ToList();Not Contains則取反:
var q = ( from o in db.Orders where !( new string[] { "AROUT", "BOLID", "FISSA" }) .Contains(o.CustomerID) select o).ToList();語句描述:這個例子使用Contain查找哪個客戶包含OrderID為10248的訂單。
語句描述:這個例子使用Contains查找其所在城市為西雅圖、倫敦、巴黎或溫哥華的客戶。
總結一下這篇我們說明了以下語句:
Group By/Having | 分組數據;延遲 |
Any | 用于判斷集合中是否有元素滿足某一條件;不延遲 |
All | 用于判斷集合中所有元素是否都滿足某一條件;不延遲 |
Contains | 用于判斷集合中是否包含有某一元素;不延遲 |
適用場景:統計數據吧,比如統計一些數據的個數,求和,最小值,最大值,平均數。
說明:返回集合中的元素個數,返回INT類型;不延遲。生成SQL語句為:SELECT COUNT(*) FROM
得到數據庫中客戶的數量:
var q = db.Customers.Count();得到數據庫中未斷貨產品的數量:
var q = db.Products.Count(p => !p.Discontinued);說明:返回集合中的元素個數,返回LONG類型;不延遲。對于元素個數較多的集合可視情況可以選用LongCount來統計元素個數,它返回long類型,比較精確。生成SQL語句為:SELECT COUNT_BIG(*) FROM
var q = db.Customers.LongCount();說明:返回集合中數值類型元素之和,集合應為INT類型集合;不延遲。生成SQL語句為:SELECT SUM(…) FROM
得到所有訂單的總運費:
var q = db.Orders.Select(o => o.Freight).Sum();得到所有產品的訂貨總數:
var q = db.Products.Sum(p => p.UnitsOnOrder);說明:返回集合中元素的最小值;不延遲。生成SQL語句為:SELECT MIN(…) FROM
查找任意產品的最低單價:
var q = db.Products.Select(p => p.UnitPrice).Min();查找任意訂單的最低運費:
var q = db.Orders.Min(o => o.Freight);查找每個類別中單價最低的產品:
var categories = from p in db.Products group p by p.CategoryID into g select new { CategoryID = g.Key, CheapestProducts = from p2 in g where p2.UnitPrice == g.Min(p3 => p3.UnitPrice) select p2 };說明:返回集合中元素的最大值;不延遲。生成SQL語句為:SELECT MAX(…) FROM
查找任意雇員的最近雇用日期:
var q = db.Employees.Select(e => e.HireDate).Max();查找任意產品的最大庫存量:
var q = db.Products.Max(p => p.UnitsInStock);查找每個類別中單價最高的產品:
var categories = from p in db.Products group p by p.CategoryID into g select new { g.Key, MostExpensiveProducts = from p2 in g where p2.UnitPrice == g.Max(p3 => p3.UnitPrice) select p2 };說明:返回集合中的數值類型元素的平均值。集合應為數字類型集合,其返回值類型為double;不延遲。生成SQL語句為:SELECT AVG(…) FROM
得到所有訂單的平均運費:
var q = db.Orders.Select(o => o.Freight).Average();得到所有產品的平均單價:
var q = db.Products.Average(p => p.UnitPrice);查找每個類別中單價高于該類別平均單價的產品:
var categories = from p in db.Products group p by p.CategoryID into g select new { g.Key, ExpensiveProducts = from p2 in g where p2.UnitPrice > g.Average(p3 => p3.UnitPrice) select p2 }; 了解更多