我有一个字典和一个要从字典中删除的键列表.这是我现在的实施:
var keys = (from entry in etimes
where Convert.ToInt64(entry.Value) < Convert.ToInt64(stime)
select entry.Key).ToList();
foreach (var key in keys)
{
etimes.Remove(key);
count--;
}
Run Code Online (Sandbox Code Playgroud)
有什么我可以做的消除foreach循环?
我的问题是关于SQL连接状态,负载等基于以下代码:
public IEnumberable<MyType> GetMyTypeObjects()
{
string cmdTxt = "select * from MyObjectTable";
using(SqlConnection conn = new SqlConnection(connString))
{
using(SqlCommand cmd = new SqlCommand(cmdTxt, conn))
{
conn.Open();
using(SqlDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
yield return Mapper.MapTo<MyType>(reader);
}
}
}
}
yield break;
}
Run Code Online (Sandbox Code Playgroud)
我可以看到这可能是一个问题,如果有许多进程在IEnumerable对象的迭代之间运行类似的代码,执行时间长,因为连接将打开更长时间等等.但是,这似乎也可能会降低CPU使用率在SQL服务器上,因为它只在使用IEnumerable对象时返回数据.它还降低了客户端上的内存使用量,因为客户端只需在其工作时加载一个MyType实例,而不是加载所有出现的MyType(通过迭代整个DataReader并返回List或其他内容).
您是否有任何实例可以想到您不希望以这种方式使用IEnumerable,或者您认为它完全适合的任何实例?
这会给SQL服务器带来什么样的负载?
这是你在自己的代码中使用的东西(除非提及NHibernate,Subsonic等)吗?
我想使用AuthorizeAttribute来控制允许哪些用户访问我的操作.我只是想澄清我的逻辑是有序的.
事物的正常流动是什么?我知道我可以继承MembershipProvider,但我不需要那里的所有功能,实际上只能用两个不同的角色登录.
var dict = new Dictionary<string, object>();
DateTime? myDate;
/*Next line gives: Type of conditional expression cannot be
determined because there is no implicit conversion between 'System.DateTime?'
and 'System.DBNull' */
dict.Add("breakit", myDate.HasValue ? myDate.Value : DBNull.Value);
Run Code Online (Sandbox Code Playgroud)
我不明白为什么如果一个或另一个进入期望类型为Object的字典,则需要进行隐式转换.
我正在使用 Serilog 通过 Logstash 将结构化日志数据写入 Elasticsearch。在像这样的日志消息中写入对象时
Log.Information("This is the {@object}", new {Prop = "example"})
Run Code Online (Sandbox Code Playgroud)
附加属性 _typeTag 包含在输出的 JSON 中。是否可以排除此属性?
我试图弄清楚如何在文件的开头(标题)写一个新的文本行.我知道我可以打开文件,或者寻找文件的开头,但如果我用它写,它会覆盖那里的内容.我是否必须写一个新文件然后逐行写入其他数据,还是有更好的方法?
示例文件:
1, 01/01/09, somedata, foo, bar
2, 01/02/09, somedata, foo, bar
3, 01/03/09, somedata, foo, bar
Run Code Online (Sandbox Code Playgroud)
而且我想结束
3, 1-3, 01/04/09
1, 01/01/09, somedata, foo, bar
2, 01/02/09, somedata, foo, bar
3, 01/03/09, somedata, foo, bar
Run Code Online (Sandbox Code Playgroud)
编辑:
这就是我最终做的事情:
FILE *source;
FILE *output;
char buffer[4096];
size_t bytesRead;
memset(buffer, 0, sizeof(buffer);
source = fopen("sourcefile.txt", "r");
output = fopen("output.txt", "w+");
fprintf(output, "my header text\n");
while(!feof(source))
{
bytesRead = fread(&buffer, 1, sizeof(buffer), source);
fwrite(&buffer, 1, bytesRead, output);
}
fprintf(output, "my footer text");
fclose(source);
fclose(output); …Run Code Online (Sandbox Code Playgroud) 我试图找出字符串中有多少正则表达式匹配.我正在使用迭代器迭代匹配,并使用整数来记录有多少.
long int before = GetTickCount();
string text;
boost::regex re("^(\\d{5})\\s(\\d{8})\\s(.*)\\s(.*)\\s(.*)\\s(\\d{8})\\s(.{1})$");
char * buffer;
long length;
long count;
ifstream f;
f.open("c:\\temp\\test.txt", ios::in | ios::ate);
length = f.tellg();
f.seekg(0, ios::beg);
buffer = new char[length];
f.read(buffer, length);
f.close();
text = buffer;
boost::sregex_token_iterator itr(text.begin(), text.end(), re, 0);
boost::sregex_token_iterator end;
count = 0;
for(; itr != end; ++itr)
{
count++;
}
long int after = GetTickCount();
cout << "Found " << count << " matches in " << (after-before) << " ms." << endl;
Run Code Online (Sandbox Code Playgroud)
在我的例子中,count总是返回1,即使我把代码放在for循环中以显示匹配(并且有很多).这是为什么?我究竟做错了什么? …
我正在尝试使用自行开发的Web API来检索一些数据.文档全部用PHP编写.我正在看的例子是这样的:
$params = array(
'id' => 1
,'data' => array(
,'email' => 'example@hasoffers.com'
)
$url = "www.someapi.com/api?" . http_build_query( $params );
Run Code Online (Sandbox Code Playgroud)
我正在使用C#WebClient类,但我无法弄清楚如何序列化数据参数:
WebClient wc = new WebClient();
wc.QueryString["id"] = "1";
wc.QueryString["data"] = // I have no idea.
string json = wc.DownloadString(apiUrl);
Run Code Online (Sandbox Code Playgroud)
我尝试了一些变化:
wc.QueryString["data"] = "email=test@stackoverflow.com";
wc.QueryString["data"] = Uri.EscapeDataString("data[email]=test@stackoverflow.com");
wc.QueryString["data"] = Uri.EscapeDataString("email[0]=test@stackoverflow.com");
wc.QueryString["data"] = Uri.EscapeDataString("email=test@stackoverflow.com");
Run Code Online (Sandbox Code Playgroud)
当然,我没有任何地方的PHP设置来查看http_build_query()实际返回的内容.
我试图在一个按钮旁边水平居中加载器gif.我能弄清楚如何做到这一点的唯一方法是浮动gif并将其全部移动.有没有更好的办法?
在我的例子中,左边的加载器是我想要的,如果可能的话没有浮动.
例如,如果我有这些数据:
CREATE TABLE FooBar ( Name varchar(16) )
INSERT FooBar SELECT 'test@test.com'
Run Code Online (Sandbox Code Playgroud)
以下查询不会返回我期望的内容:
SELECT * FROM FooBar WHERE Name = 'test@test.com ' -- Returns the row
SELECT * FROM FooBar WHERE Name LIKE 'test@test.com ' -- Nothing Returned
SELECT * FROM FooBar WHERE Name = ' test@test.com' -- Nothing Returned
Run Code Online (Sandbox Code Playgroud)
为什么=(我假设的意思是完全等于)在末尾返回数据时有额外的空间,而a LIKE则没有?
c# ×5
sql-server ×2
arrays ×1
asp.net-mvc ×1
boost-regex ×1
c ×1
c++ ×1
css ×1
css-float ×1
file ×1
greedy ×1
ienumerable ×1
iterator ×1
linq ×1
membership ×1
php ×1
query-string ×1
regex ×1
serilog ×1
t-sql ×1
text ×1