一行代码收集页
1. 获取类实体的属性值
//Object container
//System.ComponentModel 命名空间
PropertyDescriptor descriptor = TypeDescriptor.GetProperties(container).Find(propName, true);
return descriptor.GetValue(container);
2. .net2.0 跟.net1.0 的asp.net应用程序不能同时分配到同一个应用程序池上(w3p.exe)
参考:http://blog.csdn.net/tiantian1980/archive/2008/05/30/2495417.aspx
3. Host文件位置 :C:\WINDOWS\system32\drivers\etc
4. Response.Redirect(http://www.0576sy.cn/); 后写不写Response.End(); 效果都是一样的.
5.使用 Response.Buffer = false; 可以是使页面内容直接输出,而不是生成全部html(输出数据)后再输出,可以在页面生成或者需要执行一个长时间操作是使用,把要长时间执行的操作写到页面末尾</html><%DoJob()%>,或者在rotected override void Render(HtmlTextWriter writer) 的重载中调用,
6.随机读取数据(MSSQL) Select * From Tablename Order By newId()
7.设置首页跟收藏, 注意收藏时使用 js location.hostname(href) 存在访问权限问题,可以使用服务器脚本或静太指定
<a href="#" onclick="window.external.AddFavorite('http://<%#Request.ServerVariables["HTTP_HOST"] %>', '<%#Setting.CompanyName %>');">收藏本公司</a>
<a href="#" onclick="this.style.behavior='url(#default#homepage)';this.setHomePage(location.hostname);">设为首页</a>
8.Select Into 与 Insert into Select ...
Select Into: 目标表(下面是NewShippers )不存在,语句执行后将创建
SELECT Shippers.*, Link.Address, Link.City,
Link.Region, Link.PostalCode
INTO NewShippers
FROM Shippers
JOIN LinkServer.DB.dbo.Shippers AS Link
ON (Shippers.ShipperID = Link.ShipperID)
Insert Into Select :待插入表已经存在
INSERT INTO MyBooks(columns)
SELECT title_id, title, type
FROM titles
WHERE type = 'mod_cook'
SET IDENTITY_INSERT TableName ON--开启(可以显性插入Id)
SET IDENTITY_INSERTTableName OFF--关闭
9. FCK V2.* 在GB2312编码下上传文件乱码
FCKeditor\editor\filemanager\browser\default下找到frmupload.html和frmresourceslist.html
在Head里面加<meta http-equiv="content-type" content="text/html; charset=gb2312">
10.Asp.net2.0 中App_Code 与App_Code.dll
如果选择将App_Code目录上传到空间那么就要保证Bin目录下不要包含App_code.dll(发布网站时一般会生成)文件,即两个只能选一个,不然会出现两个程序集冲突的情况.
11.Cache 类是线程安全的,在asp.net环境下不需要额外的代码
12.JQuery中使用 $("input[name=searchType][checked]") 来选中一组名叫searchType的radio元素中已选中的那个
13.GridView如果不绑定数据源控件,则以下两种方式,无法获取主键: e.Keys[0].ToString() e.Keys["id"].ToString() 请使用以下方式获取主键: gv.DataKeys[e.RowIndex].Value 13.GridView如果不绑定数据源控件,则以下两种方式,无法获取主键:
e.Keys[0].ToString()
e.Keys["id"].ToString()
请使用以下方式获取主键:
gv.DataKeys[e.RowIndex].Value
15.将整型转化成二进制字符串表示MessageBox.Show( Convert.ToString(-1, 2));
16.IIS7.0中禁止脚本运行,需要设置对应目录的处理程序映射,在高级里面取消执行脚本,(批量设置时在下放空白处点鼠标右键找到相应的菜单进行设置)
17.强制浏览器站兼容模式显示<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
18.MSSQL拼接行数据
Declare @className nvarchar(1000)
Select @className='' --注意一定要先初始化变量
Select @className=@className + t.className +';' From (Select ClassName From oblog_logclass ) as t
Select @className as CN
19.可以在asp.net环境的线程中使用System.Web.Hosting.HostingEnvironment.MapPath("/")来将获取实际地址
20.获取当天(或前后几天)凌晨时间,DateTime.Now.Date.AddDays(+-3)
21. <%#txtTilte.Text%> 方式在页面上绑定一次后会创建一个匿名控件,视图状态会保存下来因此只要在条件“!IsPostBack”中绑定一次就可以了
22.编辑页面内容(Web编辑器实现原理)地址栏输入:javascript:if(document.body.contentEditable=true);
23.使用Function名称.Call或Apply来掉用js函数,实现事件触发的效果
如:function ddl_change(){
alert($(this).val());
}
是下拉框改变事件的处理函数,可以使用 ddl_change.call($("ddlProvince")[0],null,null); 来调用,这样$(this)就可以获取到ddlProvince控件了
24.关闭模态弹窗后刷新主窗口,需要使用button按钮,LinkButton无效,$("btnRefresh").click();
25.SQL dateAdd(day,0.9,'2011-11-07 23:59:59') 结果仍旧是2011-11-07 ... 即不满一天的会忽律
26.LINQ 返回可能为空记录表的某字段MAX的安全作法
var retId = Ctx.SqlCmdTexts.Max(ent => (int?)ent.sequence);
int maxId = retId.HasValue ? retId.Value + 1 : 1;
27.SqlCommand添加可空参数
public void AddParameter(SqlCommand cmd, string parameterName, object value)
{
SqlParameter parameter = new SqlParameter(parameterName, value);
if (value == null)
{
parameter.IsNullable = true;
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
28.使用SynchronizationContext.Current.Post"延迟"UI事件执行
1.如使用ShowDialog打开的窗体,在关闭时先关闭窗体再显示提示信息则可以使用Post((o)=>{MessageBox(....)},null);
2.使用ShowDialog打开的窗体回调时需要重打开一个新的也可以这样写
SynchronizationContext.Current.Post((o) =>
{
var btn = typeof(ToolStripButton).GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance);
btn.Invoke(bindingNavigatorAddNewItem, new object[] { null });
},null);
29.使用System.Data.DataSetExtensions 可以让DataTable支持Linq
DataTable dt = new DataTable();
FillDataTable(dt);
dt.AsEnumerable().Where(ent => ent.Field<int?>("Level") >= 3).ToList();
30.复制DataTable的结构并填充制定页面的数据(客户端分页)
DataTable dt = SqlHelper.ExecuteDataset(DBCtx.ConnStr, CommandType.Text, cmdText).Tables[0];
_Total = dt.Rows.Count;
DataTable dt2 = dt.Clone();
foreach(var dr in dt.AsEnumerable().Skip(startRowIndex).Take(maximumRows))
{
dt2.Rows.Add(dr.ItemArray);
}
return dt2;
31.创建非聚集包含索引并制定索引填充因子
CREATE NONCLUSTERED INDEX [索引名]
ON [dbo].[表明]
(
[索引列名] ASC
)
INCLUDE ( 包含列1,包含列2)
WITH ( fillfactor =80 , SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF)
ON [PRIMARY]
32.Linq/Lambda 之分组统计实现
List<BorrowTimeWinModel> list = new List<BorrowTimeWinModel>()
{
new BorrowTimeWinModel(){MouldNo="223",UseCount=1,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="223",UseCount=2,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="223",UseCount=3,Barcode="5"},
new BorrowTimeWinModel(){MouldNo="223",UseCount=4,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="221",UseCount=1,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="221",UseCount=2,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="221",UseCount=3,Barcode="5"},
new BorrowTimeWinModel(){MouldNo="221",UseCount=4,Barcode="1"}
};
var rList= list.GroupBy(ent=>ent.MouldNo).Select(ent=>new {Name=ent.Key,Sum=ent.Sum(it=>it.UseCount),Max=ent.Max(it2=>it2.Barcode)}).ToList();
foreach (var r in rList)
{
Console.WriteLine(string.Format("Name:{0},Toatl:{1},Max:{2}", r.Name, r.Sum, r.Max));
}
按多个字段分组
var byM = builder.MOPTable.GroupBy(ent => new { ent.MCode, ent.MName }).Select(g =>
new { MCode = g.Key.MCode,
MName = g.Key.MName,
Cost=g.Sum(it=>it.Cost),
Qty=g.First().Qty,
Price = g.Sum(it => it.Cost) / g.First().Qty
}
);
33.获取本机MAC,与NDS配置信息
List<IPAddress> res = new List<IPAddress>();
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
Console.WriteLine(nic.GetPhysicalAddress().ToString());//MAC
if ((nic.OperationalStatus == OperationalStatus.Up) && (nic.NetworkInterfaceType != NetworkInterfaceType.Loopback))
{
foreach (IPAddress dns in nic.GetIPProperties().DnsAddresses)
{
if (!res.Contains(dns))
res.Add(dns);
}
}
}
34.动态加载窗体
使用Assembly.LoadFrom("F.Studio.WinUI.exe") 要带扩展名,并且效率没Load搞
参考:http://www.cnblogs.com/xuefeng1982/archive/2009/11/09/1598956.html
private Form CreateForm(ModuleInfo info)
{
var a = System.IO.Path.GetFileNameWithoutExtension(info.Assembly);
var t = Assembly.Load(a).GetType(info.Type, true);
var frm = Activator.CreateInstance(t) as Form;
return frm;
}
菜单节点
<ModuleInfo>
<Id>8811</Id>
<Title>合作伙伴</Title>
<Key>be6a046b-1431-491c-97e6-70d5fd6bc001</Key>
<ToolTip />
<Assembly>FIStudio.WinUI.exe</Assembly>
<Type>FIStudio.WinUI.UI.frmCooperatorMgr</Type>
<Args />
<IsShowDialog>false</IsShowDialog>
<OrderId>10</OrderId>
</ModuleInfo>
35.返回指定泛型的基础类型Nullable.GetUnderlyingType(gType);
36. licenses.licx 的解决方法
在使用DevExpress控件的时候。每次对窗体进行更改的时候,都会出现一个对话框。发布的时候 也会出现一个对话框。之前的解决方法是在发布的时候把licenses.licx给删除掉,但是这个方法治标不治本。每次发布的时候都要删除,如果忘记删除了,还需要重新发布,让人很是抓狂。现通过Google,找到了解决方法:licenses.licx Properties 的Build Action 设置为无即可。
深入的解决问题是很有必要的,这样解决问题的方法是一劳永逸的。
p
37.统计表记录数
SELECT a.name, b.rows
FROM sysobjects AS a INNER JOIN
sysindexes AS b ON a.id = b.id
WHERE (a.type = 'u') AND (b.indid IN (0, 1))
ORDER BY b.rows DESC
38.剪切板到gridview
var txt= Clipboard.GetText(TextDataFormat.Text).Replace(@"""","");
var rows = txt.Split(new string[]{Environment.NewLine},StringSplitOptions.RemoveEmptyEntries);
dataGridView1.Columns.Clear();
bool first=true;
foreach (var row in rows)
{
var cells= row.Split('\t');
if(first)
{
for (int i = 0; i < cells.Length; i++)
{
dataGridView1.Columns.Add("c" + i, cells[i]);
}
first = false;
}
else{
dataGridView1.Rows.Add(cells);
}
}
// 使用这句可能导致资源管理器崩溃 Clipboard.Clear();
Clipboard.SetText(" ");// ""会报错,需要一些空字符
iKanBanBindingSource.DataSource = list;
39.代码中配置EF链接字符串
EntityConnectionStringBuilder ecb = new EntityConnectionStringBuilder();
ecb.Metadata = "res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl";
ecb.Provider = "System.Data.SqlClient";
ecb.ProviderConnectionString = "data source=DatabaseServerName;initial catalog= DatabaseName;persist security info=True;user id=sa;password=YourPassword;multipleactiveresultsets=True;App=EntityFramework";
YourEntity YEntity = new YourEntity(ecb.ConnectionString);
40.一个触发器

USE [JL_MFG] GO /****** Object: Trigger [dbo].[trigMessageList] Script Date: 12/15/2017 18:48:25 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /****** Script for SelectTopNRows command from SSMS ******/ Create trigger [dbo].[Trig_Enterprise] on [dbo].Enterprise after insert,update,delete as declare @log nvarchar(max) declare @loginTime nvarchar(50) declare @host_name nvarchar(50) declare @login_name nvarchar(50) declare @appName nvarchar(100) declare @ip nvarchar(50) declare @inedV nvarchar(110) declare @insV nvarchar(110) declare @detV nvarchar(110) select @loginTime=a.login_time, @host_name=a.host_name, @login_name=a.login_name, @appName=a.[program_name], @ip=b.client_net_address from sys.dm_exec_sessions a , sys.dm_exec_connections b where a.session_id=b.session_id and a.session_id = @@SPID; select @insV=EnterpriseDate From inserted Select @detV=EnterpriseDate From deleted set @log=@loginTime+','+@host_name+','+@login_name+','+@appName+','+@ip+','+@insV+','+@detV INSERT INTO [JL_MFG].[dbo].[analysis_Log] ([ReportId] ,[LogType] ,[KeyId] ,[KeyType] ,[Content] ,[AddTime] ,[Severity]) VALUES (1 ,'' ,1 ,0 ,@log ,GETDATE() ,1)
41.一个触发器

Create trigger safety On Database For drop_table as DECLARE @event xml DECLARE @tablesname varchar(1024) set @event=EVENTDATA(); set @tablesname=@event.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname') if @tablesname='UserTable' and @tablesname='UserTable' begin PRINT 'sorry,you are not dba' ROLLBACK ; end
42.批量删除

SET ROWCOUNT 10 delete_more: select 1 delete from dbo.Alarm_Log where RecId<1000 IF @@ROWCOUNT > 0 GOTO delete_more SET ROWCOUNT 0
43.一个正规表达式
前三个字母固定若ABC|CDA|BBC 后面接1-9,然后是任意位数字

var m = Regex.Match(ent.QTeam, "^(HDL|HDF|HDD){1}[1-9]{1}[0-9]*$", RegexOptions.Singleline | RegexOptions.IgnoreCase); if (!m.Success) { throw new Exception("必需是XXX + [1-9]{1位} +数字{0到多位} 这样的形式"); }
44.数据库一只读操作
ALTER DATABASE FDG_Sub SET READ_ONLY WITH NO_WAIT --如果执行不了先将数据库设置成离线模式
ALTER DATABASE FDG_Sub SET READ_WRITE WITH NO_WAIT
--修改数据库状态为正常状态
RESTORE DATABASE FDG_Sub WITH RECOVERY;
Go
--离线数据库
ALTER DATABASE FDG_Sub
SET OFFLINE WITH ROLLBACK IMMEDIATE
--连接数据库
ALTER DATABASE FDG_Sub
SET ONLINE
45.数据库还原Log并设置成备用\只读模式
ALTER DATABASE [FDG_Test] SET OFFLINE WITH ROLLBACK IMMEDIATE --离线
ALTER database [FDG_Test] set online --马上上线
RESTORE LOG [FDG_Test] FROM DISK = N'D:\Log4' --还原
WITH STANDBY = N'D:\ROLLBACK_UNDO_FDG.BAK',
NOUNLOAD, STATS = 10
ALTER database [FDG_Test] set online --在上线一次, 操作可多次执行,有幂等性
ALTER DATABASE [FDG_Test] SET SINGLE_USER
ALTER DATABASE [FDG_Test] SET MUlti_USER
46.devexpress 数字格式化 输出
Numeric "{0:n2}"
47.反射方式创建泛型List
var paramType = pty.PropertyType.GetGenericArguments()[0];
var listType = typeof(List<>).MakeGenericType(paramType);
var list = Activator.CreateInstance(listType) as IList;
from F.Studio.Prime.Util import MyEnumerable as E
list=[1,2,3,4,5]
E.A2(list,lambda x:x*x,',')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!