小编Fre*_*dou的帖子

是否可以优化该代码?

我对速度感兴趣,而不是好看的代码,这就是为什么我使用数组而不是列表(整数).

我有一个数组看起来像:0,1,0,1,1,0,1,0,1,1,1,0,0,1

我对每个数字的位置感兴趣,所以我可以随后随机选择一个.

所以我所做的是循环遍历数组以获取每个1的位置编号,然后创建一个如下所示的新数组:2,4,5,7,9,10,11,14

在这里可以使用bitwise吗?我不知道

代码看起来像:

Private Function theThing() As Integer()
    Dim x As Integer
    'arIn() would be a parameter
    Dim arIn() As Integer = {0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1}
    Dim ar() As Integer = Nothing
    Dim arCount As Integer = -1

    For x = 1 To arIn.GetUpperBound(0)
        If arIn(x) = 1 Then
            arCount += 1
        End If
    Next

    If arCount > -1 Then
        'using redim preseve is slower than the …
Run Code Online (Sandbox Code Playgroud)

.net vb.net algorithm

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

你怎么称呼这种反模式?

在数据库中,您有一个带有位字段的表,让该字段调用Active

在应用程序中,您有一个变量boolean,我们称之为NotActive

每次从表中获取字段时,在应用程序中都可以切换变量的含义.

NotActive = !mytable.active;
Run Code Online (Sandbox Code Playgroud)

另一个例子是名为Enable__yes__no的数据库中的位字段以及您执行的代码

control.enabled = !mytable.Enable_yes_no
Run Code Online (Sandbox Code Playgroud)

最佳做法是保持相同的名称和相同的含义,但上面的模式,你怎么称呼?

anti-patterns

1
推荐指数
2
解决办法
482
查看次数

如何将n列连接成一列?

我的目标是,如果我有这个:

colmuns      c1 | c2 | c3 | c4 | c5 | n..
row1          a |  a |  a |  a |  a | 
row2          b |  b |  b |  b |  b |
rowN...
Run Code Online (Sandbox Code Playgroud)

我想做一个会返回的查询

   myCol
   aaaaa
   bbbbb
   nnnnn...
Run Code Online (Sandbox Code Playgroud)

我知道我能做到这一点

select t2.id, (
    select  *
    from mytable t1
    where t1.id= t2.id
    for xml path('')) as row
from mytable t2
Run Code Online (Sandbox Code Playgroud)

并且它会将包含许多列的整行放入我想要的一列中

现在,如何过滤掉xml标签?

或者还有其他解决方案吗?

编辑 列可能为null不是varchar,可以是int,varchar,date等

sql-server

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

在字符串中相互替换两个字符,而不使用占位符字符

我有这个字符串

aa b qqidjwljd p fjem

我需要更换bppb

a a p qqidjwljd b fjem

我这样做的方式看起来像这样

myvar.replace("b","1").replace("p","b").replace("1","p")
Run Code Online (Sandbox Code Playgroud)

这有点难看

有没有更好的办法?

编辑

为什么难看?因为我必须决定/找到适用于任何可能情况的任意字符集

.net regex linq

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

Linq查询性能,比较编译查询与非编译查询

我想知道如果我将常见的where子句查询提取到一个公共表达式中它会使我的查询更快,如果我在一个集合上说10个linq查询的东西与where子句的完全相同的第一部分.

我做了一个小例子来解释一下.

public class  Person
{
    public string First { get; set; }
    public string Last { get; set; }
    public int Age { get; set; }
    public String Born { get; set; }
    public string Living { get; set; }
}

public sealed class PersonDetails : List<Person>
{
}



PersonDetails d = new PersonDetails();
        d.Add(new Person() {Age = 29, Born = "Timbuk Tu", First = "Joe", Last = "Bloggs", Living = "London"});
        d.Add(new Person() { Age = 29, Born …
Run Code Online (Sandbox Code Playgroud)

c# linq functional-programming

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

为什么路上有非法字符?

....
case "DOWNLOAD":
if (File.Exists(commandContent)) {
MessageBox.Show(commandContent);
result = System.Convert.ToBase64String(File.ReadAllBytes(commandContent)); //ERROR
result = HttpUtility.UrlEncode(result);          
}
break;
Run Code Online (Sandbox Code Playgroud)

并且未处理的错误异常在路径中显示"非法字符".MessageBox显示正确的路径

  C:\Users\Me\Myfile.exe
Run Code Online (Sandbox Code Playgroud)

我试着做以下事情:

 commandContent = commandContent.replace(@"\",@"\\");
 result = System.Convert.ToBase64String(File.ReadAllBytes(commandContent)); //ERROR
Run Code Online (Sandbox Code Playgroud)

我也尝试过以下方法:

 commandContent = @""+commandContent+"";
 result = System.Convert.ToBase64String(File.ReadAllBytes(commandContent)); //ERROR
Run Code Online (Sandbox Code Playgroud)

但这不起作用.而且更奇怪的是它正常工作,但是一旦我将commandContent插入db(使用ajax而不是常规表单提交)的方式进行了一些修改,这个问题出现了?

编辑:

我尝试使用硬编码路径

 commandContent = @"C:\Users\Me\file.exe";
Run Code Online (Sandbox Code Playgroud)

这工作正常.如何强制变量不包含任何非法字符?

c# file

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

关于此内联赋值的c#规则是什么

我期待结果是0

dotnetfiddler演示

using System;

public class Program
{
    public static void Main()
    {
        int value = 5;
        value += (value += 5) > 5 ? -value : +value;

        Console.WriteLine(value);
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 价值从5开始
  2. 价值增加到10
  3. 合并检测到它高于5
  4. 它返回-10

因为检测到的值高于5,这意味着在这种情况下它的值为10,我期待10 + = -10

发生的事情是5 + = -10

什么定义了这种行为?

c#

1
推荐指数
2
解决办法
123
查看次数

试图弄清楚如何在没有LINQ的情况下进行快速复杂的排序

我想我太习惯使用LINQ,但这很慢,我确实使用了一个分析器,它耗费了65%的时间用于我正在尝试做的事情

var unlock = Locked.OrderBy(x => x.Weight) //double
                   .ThenByDescending(x => x.Stuff?.Level ?? 100) //int
                   .ThenBy(x => x.Penalty) //double
                   .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

Locked是一个列表,我知道排序会改变列表,但我并不在乎,我只是想让它工作(如果可能的话),下面的代码不会给出与上面的LINQ相同的结果;

Locked.Sort(delegate (Node a, Node b)
{
    int xdiff = a.Weight.CompareTo(b.Weight);

    if (xdiff != 0) return xdiff;

    var aStuff = a.Stuff?.Level ?? 100;
    var bStuff = b.Stuff?.Level ?? 100;

    xdiff = -1 * aStuff.CompareTo(bStuff);

    if (xdiff != 0) return xdiff;

    return xdiff = a.Penalty.CompareTo(b.Penalty);
});

var unlock = Locked[0];
Run Code Online (Sandbox Code Playgroud)

首先,是否可以使用List.Sort进行复杂的排序?asc /然后desc /然后asc?

如果是的话,我的错误在哪里?

接下来是,有没有更快的方式做我正在尝试做的事情?

c# sorting

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

应该使用runat = server的每个元素都有一个id属性吗?

我继承了一个asp.net网站来维护

在查看aspx页面时,几乎每个runat = server的元素都没有定义id属性.

我应该检查每个元素并添加一个吗?

asp.net

0
推荐指数
1
解决办法
186
查看次数

如何正确处理来自asp.net-mvc的不必要的访问(主要是id部分)

假设我有这个网址:

http://myweb/item/info/1
Run Code Online (Sandbox Code Playgroud)

带有链接

http://myweb/item/edit/1
Run Code Online (Sandbox Code Playgroud)

我不希望用户手动更改为

http://myweb/item/edit/2
Run Code Online (Sandbox Code Playgroud)

我希望用户点击信息页面上的链接,以便他可以访问编辑页面.

你会如何管理?

asp.net-mvc

0
推荐指数
1
解决办法
76
查看次数

你能把这行c#转换成vb.net吗?

我尝试了很多东西,但我总是得到"无法将字符串转换为membershipuser"

来自ASP.Net MVC会员入门套件

来自文件ListUsers.aspx的这一行

var users = (ViewData["Users"] as List<MembershipUser>);
Run Code Online (Sandbox Code Playgroud)

ViewData ["用户"]来自

    public virtual ViewResult Index( int? pageIndex, int? pageSize )
    {
        ViewData["Title"] = "Membership Administration";
        int totalRecords;
        var members = Membership.GetAllUsers( pageIndex ?? 0, pageSize ?? 25, out totalRecords );
        ViewData["Users"] = ToList<MembershipUser>( members );
        ViewData["Roles"] = dotNetRoles.GetAllRoles().ToList();
        return View( "ListUsers" );
    }
Run Code Online (Sandbox Code Playgroud)

谢谢!

c# vb.net asp.net-mvc

0
推荐指数
1
解决办法
148
查看次数

带有更新和2日期时间字段的sql server和getdate()

要求是,两个字段必须相等,你会做什么

declare @var datetime

set @var = getdate()

update table set f1=@var,f2=@var
Run Code Online (Sandbox Code Playgroud)

或者干脆

update table set f1=getdate(),f2=getdate()
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server-2005

0
推荐指数
1
解决办法
635
查看次数