.AsEnumerable()延迟执行,不会立即执行。当你调用.AsEnumerable()的时候,实际上什么都没有发生。.ToList()立即执行- 当你需要操作结果的时候,用
.ToList(),否则,如果仅仅是用来查询不需要进一步使用结果集,并可以延迟执行,就用.AsEnumerable()/IEnumerable/IQueryable - .AsEnumerable()虽然延迟执行,但还是访问数据库,而.ToList()直接取得结果放在内存中。比如我们需要显示两个部门的员工时,部门可以先取出放置在List中,然后再依次取出各个部门的员工,这时访问的效率要高一些,因为不需要每次都访问数据库去取出部门。
IQueryable实现了IEnumberable接口。但IEnumerable换成IQueryable后速度提高很多。原因:
IQueryable接口与IEnumberable接口的区别:IEnumerable泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable是将Skip ,take这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。IEnumerable跑的是Linq to Object,强制从数据库中读取所有数据到内存先。
分类目录归档:后端
C# datetime转换成JavaScript认识的UTC时间
TimeSpan span = DateTime.Now.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc));
Console.WriteLine(span.TotalMilliseconds);
输出:
1386928595163.35
C#从文件byte[]获取文件mime(contentType)
public class MimeHelper
{
public static int MimeSampleSize = 256;
public static string DefaultMimeType = "application/octet-stream";
[DllImport(@"urlmon.dll", CharSet = CharSet.Auto)]
private extern static System.UInt32 FindMimeFromData(
System.UInt32 pBC,
[MarshalAs(UnmanagedType.LPStr)] System.String pwzUrl,
[MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer,
System.UInt32 cbSize,
[MarshalAs(UnmanagedType.LPStr)] System.String pwzMimeProposed,
System.UInt32 dwMimeFlags,
out System.UInt32 ppwzMimeOut,
System.UInt32 dwReserverd
);
public static string GetMimeFromBytes(byte[] data)
{
try
{
uint mimeType;
FindMimeFromData(0, null, data, (uint)MimeSampleSize, null, 0, out mimeType, 0);
var mimePointer = new IntPtr(mimeType);
var mime = Marshal.PtrToStringUni(mimePointer);
Marshal.FreeCoTaskMem(mimePointer);
return mime ?? DefaultMimeType;
}
catch
{
return DefaultMimeType;
}
}
}
Getting a string dynamically from strings resources
ResourceManager rm = new ResourceManager("RootResourceName",
typeof(SomeClass).Assembly);
string someString = rm.GetString("someString");
Node.js使用express解析cookie
首先使用cookieParser()解析请求头里的Cookie, 并用cookie名字的键值对形式放在 req.cookies 你也可以通过传递一个secret 字符串激活签名了的cookie 。
app.use(express.cookieParser());
app.use(express.cookieParser('some secret'));
下面是读写cookie的代码
var express = require('express');
var app = express();
app.get('/readcookie',function(req,res){
res.send('req.cookies.name:' + req.cookies.name);
});
app.get('/writecookie',function(req,res){
res.cookie('name', 'I'm a cookie', 60000);
res.send("cookie saved");
});
app.listen(3000);
console.log('listening on port 3000');
Node.js使用express处理静态文件,static file
var express = require('express');
var app = express();
// log requests
app.use(express.logger('dev'));
app.use(express.static(__dirname + '/public'));
app.listen(1024);
console.log('Listening on port 1024');
使用http://localhost:1024/css/style.css就可以读取/public/css/style.css文件了
Node.js教程起步资料
Tutorials
- Hello World
- Hello World Web Server
- Node.js guide
- Build a blog with Node.js, express and mongodb
- Node.Js Tutorials At Project 70
- Node.js for Beginners
Videos
- Node tuts
- Introduction to Node.js with Ryan Dahl
- Node.js: Asynchronous Purity Leads to Faster Development
- Parallel Programming with Node.js
- Server-side JavaScript with Node, Connect & Express
- Node.js First Look
- Ryan Dahl’s Google Tech Talk
Screencasts
Books
- The Node Beginner Book
- Mastering Node.js
- Up and Running with Node.js
- Node.js in Action
- Smashing Node.js: JavaScript Everywhere
- Node.js & Co. (in German)
- Sam’s Teach Yourself Node.js in 24 Hours
- Most detailed list of free JavaScript Books
Courses
Blogs
Podcasts
JavaScript resources
- Crockford’s videos (must see!)
- Essential JavaScript Design Patterns For Beginners
- JavaScript garden
- JavaScript Patterns book
- JavaScript: The Good Parts book
Node Modules
- Wiki List on Github/Joyent/Node (start here last!)
- Search for registered node.js modules
Other
.Net mvc自定义字符串截取(考虑全角/半角)
public static class HtmlHelpers
{
public static string Truncate(this HtmlHelper helper, string inputString, int length)
{
string tempString = string.Empty;
for (int i = 0, tempIndex = 0; i < inputString.Length; ++i, ++tempIndex)
{
if (System.Text.Encoding.UTF8.GetBytes(new char[] { inputString[i] }).Length > 1)
{
++tempIndex;
}
if (tempIndex >= length)
{
tempString += "...";
break;
}
tempString += inputString[i];
}
return tempString;
}
}
C#中汉字排序简单示例(拼音/笔划)
class Program
{
static void Main(string[] args)
{
string[] arr = { "趙(ZHAO)", "錢(QIAN)", "孫(SUN)", "李(LI)", "周(ZHOU)", "吳(WU)", "鄭(ZHENG)", "王(WANG)"};
//发音 LCID:0x00000804
CultureInfo PronoCi = new CultureInfo(2052);
//Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
Array.Sort(arr);
Console.WriteLine("按发音排序:");
for (int i = arr.GetLowerBound(0); i <= arr.GetUpperBound(0); i++)
Console.WriteLine("[{0}]:t{1}", i, arr.GetValue(i));
Console.WriteLine();
//笔画数 LCID:0x00020804
CultureInfo StrokCi = new CultureInfo(133124);
Thread.CurrentThread.CurrentCulture = StrokCi;
Array.Sort(arr);
Console.WriteLine("按笔划数排序:");
for (int i = arr.GetLowerBound(0); i <= arr.GetUpperBound(0); i++)
Console.WriteLine("[{0}]:t{1}", i, arr.GetValue(i));
Console.WriteLine();
//zh-cn (拼音:简中)
Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-cn");
Array.Sort(arr);
Console.WriteLine("zh-cn:");
for (int i = arr.GetLowerBound(0); i <= arr.GetUpperBound(0); i++)
Console.WriteLine("[{0}]:t{1}", i, arr.GetValue(i));
Console.WriteLine();
//zh-tw (笔划数:繁中)
Thread.CurrentThread.CurrentCulture = new CultureInfo("zh-tw");
Array.Sort(arr);
Console.WriteLine("zh-tw:");
for (int i = arr.GetLowerBound(0); i <= arr.GetUpperBound(0); i++)
Console.WriteLine("[{0}]:t{1}", i, arr.GetValue(i));
Console.ReadKey();
}
}
用类名创建实例
var classType = System.Type.GetType("System.Int32");
var i = Activator.CreateInstance(classType);
Console.WriteLine(i.GetType());