小编sco*_*ttm的帖子

如何使用LINQ"修剪"字典?

我有一个字典和一个要从字典中删除的键列表.这是我现在的实施:

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循环?

c# linq

5
推荐指数
1
解决办法
3407
查看次数

使用IEnumerable <T>返回类型的SQL数据是否有任何陷阱?

我的问题是关于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等)吗?

  • -

c# sql-server ienumerable

5
推荐指数
2
解决办法
602
查看次数

ASP.Net MVC会员资格

我想使用AuthorizeAttribute来控制允许哪些用户访问我的操作.我只是想澄清我的逻辑是有序的.

  1. 我创建了自己的IPrincipal实现
  2. 我将用户的凭据发布到安全控制器的登录操作.
  3. 我使用UserService类验证凭据,并将从UserService类返回的IPrincipal分配给HttpContext.User
  4. 我的WebAuthorizeAttribute继承了AuthorizeAttribute,它检查当前的HttpContext.User.Identity.IsAuthenticated和HttpContext.User.IsInRole,以确定用户是否有权访问该操作.

事物的正常流动是什么?我知道我可以继承MembershipProvider,但我不需要那里的所有功能,实际上只能用两个不同的角色登录.

membership asp.net-mvc

5
推荐指数
1
解决办法
973
查看次数

为什么我不能使用这个表达式的三元运算符?

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的字典,则需要进行隐式转换.

c# ternary-operator implicit-conversion

5
推荐指数
1
解决办法
3388
查看次数

是否可以从 Serilog 的输出中删除 _typeTag?

我正在使用 Serilog 通过 Logstash 将结构化日志数据写入 Elasticsearch。在像这样的日志消息中写入对象时

Log.Information("This is the {@object}", new {Prop = "example"})
Run Code Online (Sandbox Code Playgroud)

附加属性 _typeTag 包含在输出的 JSON 中。是否可以排除此属性?

c# serilog

5
推荐指数
1
解决办法
1292
查看次数

如何在不覆盖任何数据的情况下在文件开头添加新行?

我试图弄清楚如何在文件的开头(标题)写一个新的文本行.我知道我可以打开文件,或者寻找文件的开头,但如果我用它写,它会覆盖那里的内容.我是否必须写一个新文件然后逐行写入其他数据,还是有更好的方法?

示例文件:

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)

c text file

4
推荐指数
1
解决办法
1531
查看次数

为什么我的Boost.Regex搜索只报告一次匹配迭代?

我试图找出字符串中有多少正则表达式匹配.我正在使用迭代器迭代匹配,并使用整数来记录有多少.

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循环中以显示匹配(并且有很多).这是为什么?我究竟做错了什么? …

c++ regex iterator greedy boost-regex

4
推荐指数
1
解决办法
3214
查看次数

如何在c#中将数组作为查询字符串的参数发送?

我正在尝试使用自行开发的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()实际返回的内容.

php c# arrays query-string

4
推荐指数
1
解决办法
1714
查看次数

如何将图像向下移动几个像素?

http://jsfiddle.net/sWceL/

我试图在一个按钮旁边水平居中加载器gif.我能弄清楚如何做到这一点的唯一方法是浮动gif并将其全部移动.有没有更好的办法?

在我的例子中,左边的加载器是我想要的,如果可能的话没有浮动.

css css-float

4
推荐指数
1
解决办法
4179
查看次数

在TSQL查询中尾随空格的处理是什么?

例如,如果我有这些数据:

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则没有?

t-sql sql-server

4
推荐指数
1
解决办法
955
查看次数