小编jno*_*ovo的帖子

C#"var"和C++"auto"之间的差异

我现在正在学习C++,因为我需要编写一些低级程序.

当我了解"auto"关键字时,它会从C#中提醒我"var"关键字.

那么,C#"var"和C++"auto"的区别是什么?

c# c++ var auto

21
推荐指数
3
解决办法
1万
查看次数

为什么LINQ to SQL将GroupBy转换为多个查询

我注意到甚至比使用GroupBy的更简单的LINQ查询也被转换为与组密钥一样多的SQL查询.我没有找到任何解释为什么会发生这种情况或我如何避免它.

例如,查询:

from p in People group p by p.Name into g select g
Run Code Online (Sandbox Code Playgroud)

被翻译成selects列的不同值Name,就像这个:

-- Region Parameters
DECLARE @x1 VarChar(20) SET @x1 = 'John'
-- EndRegion
SELECT [t0].[Name], [t0].[SurName]
FROM [People] AS [t0]
WHERE ((@x1 IS NULL) AND ([t0].[Name] IS NULL)) 
     OR ((@x1 IS NOT NULL) AND ([t0].[Name] IS NOT NULL) AND (@x1 = [t0].[Name]))
GO
Run Code Online (Sandbox Code Playgroud)

但是,如果我把整个表带到内存中,比如调用AsEnumerable(),

from p in People.AsEnumerable() group p by p.Name into g select g
Run Code Online (Sandbox Code Playgroud)

只发出一个select,检索所有行,然后LINQ在内存中执行分组.

我发现这种行为相当混乱和容易出错,因为我经常发现自己在不同的语句中编写复杂的查询,我必须小心地调用AsEnumerable或 …

c# linq sql-server linq-to-sql

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

Cisco VPN 客户端自动登录

我需要自动化 Cisco VPN 客户端版本 5.0.07.0440 的登录过程。我尝试过使用这样的命令行,但有问题:

vpnclient.exe connect MyVPNConnection user username pwd password
Run Code Online (Sandbox Code Playgroud)

这将启动连接,但随后会显示“用户身份验证”对话框,询问用户名、密码和域。用户名和密码已填写,不需要域。

要继续,我必须按“确定”按钮。

有没有办法不显示对话框并自动登录VPN?

authentication vpn client cisco

7
推荐指数
2
解决办法
2万
查看次数

来自MemberExpression的ReflectedType

鉴于此代码:

static void Main(string[] args)
{
    Expression<Func<SomeDerivedClass, object>> test = i => i.Prop;
    var body = (UnaryExpression) test.Body;
    Console.WriteLine(((MemberExpression) body.Operand).Member.ReflectedType);
}

public class SomeClass
{
    public int Prop { get; private set; }
}

public class SomeDerivedClass : SomeClass
{
}
Run Code Online (Sandbox Code Playgroud)

我希望ReflectedType是SomeDerivedClass,因为它是表达式的参数类型.但它是SomeClass,如果我理解正确的话 - 声明类型.

这是为什么?

.net c# linq-expressions

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

XAML 中的字符串插值

我正在考虑在 XAML 中使用 C# 6 字符串插值的方法,例如在一些简单的场景中使用它们而不是值转换器,例如在绑定到数字时用空字符串替换零。

从它的设计讨论

内插字符串是一种构造字符串(或 IFormattable)类型值的方法,方法是将字符串的文本与将填充字符串中的“漏洞”的表达式一起写入。编译器根据内插字符串构造格式字符串和填充值序列。

但是,正如我怀疑的那样,它们似乎无法从 XAML 中使用,因为它使用不同的编译器来生成 BAML,而且我在生成的.g.i.cs文件中找不到字符串的踪迹。

  • XAML 不支持字符串插值吗?
  • 可能有哪些解决方法?也许使用标记扩展来动态编译字符串插值?

wpf xaml markup-extensions string-interpolation c#-6.0

6
推荐指数
2
解决办法
4129
查看次数

加速LINQ to SQL查询

在编写LINQ to SQL查询以优化或加速LINQ to SQL时,我们可以记住哪些常见的事情?

例如,通常,LINQ to SQL必须在每次执行查询时将LINQ查询转换为SQL; 这涉及在几个阶段中递归构成查询的表达式树.我们所做的就像使用CompiledQuery类预编译查询一样.

c# sql linq

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

如何使用serilog自定义异常输出

我正在使用Serilog作为我的日志框架(Seq作为我的日志接收器).记录异常时,我使用的是:

log.Error(ex, "Operation Failed");
Run Code Online (Sandbox Code Playgroud)

我的应用程序大量使用async/await方法.当发生未处理的异常时,堆栈跟踪很难读取.有一个nuget包可以清理异步堆栈跟踪(https://github.com/aelij/AsyncFriendlyStackTrace).这将创建一个扩展方法,使您可以访问已修改/清除的堆栈跟踪:

ex.ToAsyncString()
Run Code Online (Sandbox Code Playgroud)

我希望能够使用此库在写入Seq之前拦截堆栈跟踪,而是记录清理/修改的堆栈跟踪.

是否有一种方法可以使用Serilog/Seq来控制发送到日志接收器的错误字符串的确切输出?

c# logging serilog getseq

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

减少linq查询以进行过滤

我有其结合性质的视图模型3个文本框的视图SupplierName,Contact,Address结合并一个键SearchCommand场所在我的视图模型.

我的要求是Supplier根据上述属性过滤记录.我使用了EntityFramework.

用户可以输入任何上述文本框,这些文本框会导致我编写9个不同的查询.例如,如果用户仅在SupplierName文本框上输入数据,那么我需要使用SupplierNameas参数运行一个查询.如果用户输入SupplierNameContact文本框,那么我需要运行另一个查询.等等.

这是我的代码:

public IEnumerable<Model.Supplier> GetAllSuppliersBySearch(string nameMatch, string contactMatch, string phoneMatch)
    {

        if(nameMatch!=null)
        {
             var q = from f in Context.Suppliers
                where f.SupplierName==nameMatch 
                select f;
        }
        else if(contactMatch!=null)
        {
             var q = from f in Context.Suppliers
                where  f.ContactName==contactMatch 
                select f;
        }
        else if(phoneMatch!=null)
        {
            var q = from f in Context.Suppliers
                where  f.ContactName==contactMatch 
                select f;
        }

        return q.AsEnumerable();
    }
Run Code Online (Sandbox Code Playgroud)

而不是编写多个查询,如何使用一个查询或以任何优化的方式完成此操作?

c# sql linq wpf entity-framework

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

我们是否可以在MSMQ中添加消息以供将来处理

我正在尝试创建一个MSMQ解决方案,并且对于某些消息,我希望它们仅在下午6点后处理,所以在MSMQ中有一种方法可以在Future中处理消息吗?

msmq

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