小编svi*_*ick的帖子

如何为多列 OrderBy 表达式创建表达式树

我已经为 EF 通用存储库创建了一个 orderby 表达式,如下 string command = orderByDesc ? "排序依据降序" : "排序依据";

var type = typeof(T);

var property = type.GetProperty(orderby);

var parameter = Expression.Parameter(type, "p");

var propertyAccess = Expression.MakeMemberAccess(parameter, property);

var orderByExpression = Expression.Lambda(propertyAccess, parameter);

var resultExpression = Expression.Call(typeof(Queryable), command, new Type[] { type, property.PropertyType },

                       items.Expression, Expression.Quote(orderByExpression));
items = items.Provider.CreateQuery<T>(resultExpression);
Run Code Online (Sandbox Code Playgroud)

现在我想创建包含 2 列的表达式用于排序,但无法找到有用的内容。

请帮我创建一个包含 2 列的 orderby 表达式。

.net lambda expression expression-trees

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

Razor是否像LINQ一样与.NET相关?

Anders Hejlsberg将LINQ描述为语法糖.换句话说,它仍然是C#.只是他们已经添加了一些快捷方式,因此您无需手动编写LINQ为您创建的所有内容.但是C#语言和.NET运行时没有经历任何结构变化.

Razor是一样的吗?

当事物被表达为层时,我不确定它是如何排列的.例如,这是正确的吗?

Razor
 ^
ASP.NET
 ^
C#
 ^
.NET
Run Code Online (Sandbox Code Playgroud)

我认为它是正确的,但我不确定ASP.NET是如何适应的.Razor是ASP.NET正确的,除了它增加了一些语法附加功能还是更多呢?

ASP.NET添加到底是什么?

.net c# razor asp.net-mvc-4

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

MessageBox不会显示在CodeDom生成的代码中

我用C#编写了一个构建器,用CodeDom编译代码.编译后的.exe必须显示一个MessageBox,但它不会这样做.一切正常,.exe被编译和生成,但输出不起作用(MessageBox没有出现).

这是我的代码:

private void button1_Click(object sender, EventArgs e)
    {
        String InputCode = String.Empty;
        //Unser TestCode, in dem Wir ein MessageBox aufrufen
        InputCode = "MessageBox.Show((1 + 2 + 3).ToString());";   //Here is the MSGBox

        System.CodeDom.Compiler.CodeDomProvider CodeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp");
        //Parameter für die Compilierung, wie die einzubindenen Bibliotheken usw.
        System.CodeDom.Compiler.CompilerParameters CompilerParameters = new System.CodeDom.Compiler.CompilerParameters();
        CompilerParameters.ReferencedAssemblies.Add("System.dll");
        CompilerParameters.OutputAssembly = "Outpu2t.exe";
        CompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
        CompilerParameters.CompilerOptions += "/target:winexe" + " " + "/win32icon:" + "\"" + textBox6.Text + "\"";
        CompilerParameters.GenerateExecutable = true;
        CompilerParameters.GenerateInMemory = false;

        //Über den StringBuilder wird der …
Run Code Online (Sandbox Code Playgroud)

c# codedom

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

使用目录和文件

如何在C#4.0中枚举隐藏的文件/目录

基本上我用

var directories = new DirectoryInfo(@"DirectoryName")
                .EnumerateDirectories()
                .Where(**What is the condition that should go here?**)
Run Code Online (Sandbox Code Playgroud)

c#

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

我无法引用我的类库

我有一个解决方案,包含在visual studio 2012 express中开发的两个项目,并且都针对.net framwork 4.5.

第一个"Dao"项目的目的是从数据库中获取数据.并将这些数据作为dll库提供给第二个项目

第二个项目"UI"的目的是显示来自dll库的数据

当我添加对第二个项目的引用并编写using语句时,我收到以下错误:

找不到类型或命名空间名称'Dao'(使用指令或程序集引用丢失?)

我试图将两个项目的目标更改为.net framework 4.0和.net framework 3.5,但是我得到了同样的错误.

我还添加了这段代码,以确保目标是改变但我得到了:

using System;

using Dao; // error

namespace Ui
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Type.GetType("System.Reflection.ReflectionContext", false) != null);
            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决问题?谢谢一堆.

.net c#

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

使用异步执行代码

有时,当我运行使用代码所做的异步asyncawait,我发现代码的某些部分甚至没有得到执行.例如,在以下代码中,控制台屏幕上未显示"Sleeping2":

public static void Sleeping(int millis)
{
    System.Console.WriteLine("Sleeping1");
    System.Threading.Thread.Sleep(millis);
    System.Console.WriteLine("Sleeping2");
}

public static async void SleepingAsync(int millis)
{
    await System.Threading.Tasks.Task.Run(() => Sleeping(millis));
}

public static async void DoSleepingMain()
{
    System.Console.WriteLine("DoSleepingMain1");
    SleepingAsync(12000);
    System.Console.WriteLine("DoSleepingMain2");
}

public static void Main(string[] args)
{
    DoSleepingMain();
}
Run Code Online (Sandbox Code Playgroud)

另一个例子是以下,其中不显示Sleeping1或Sleeping2.我不明白这是因为我awaitDoSleepingMain方法中的任务.

public static void Sleeping(int millis)
{
    System.Console.WriteLine("Sleeping1");
    System.Threading.Thread.Sleep(millis);
    System.Console.WriteLine("Sleeping2");
}

public static async Task SleepingAsync(int millis)
{
    System.Threading.Tasks.Task.Run(() => Sleeping(millis)); //warning: call not awaited
}

public static async void DoSleepingMain() …
Run Code Online (Sandbox Code Playgroud)

c# async-await c#-5.0

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

是否通过for循环创建任务与单独创建它们不同?

我遇到的问题似乎与任务创建有关.在使用循环填充任务数组并在单独的循环中启动它之后,我的结果虽然一致,但却是错误的.但是,如果我单独填充数组,在循环内启动每个任务,一切都很好.任何人都可以给我一些建议吗?

例如,这是有问题的:

int c = 1;
for (int i = 1; i <= 4; i++)
    {
       taskArray[i-1] = new Task(() => calculateRows(c, true));
       c = c + 2;
    }
foreach (Task t in taskArray) t.Start();
Run Code Online (Sandbox Code Playgroud)

但这很好用:

taskArray[0] = new Task(() => calculateRows(1, true));
taskArray[1] = new Task(() => calculateRows(3, true));
taskArray[2] = new Task(() => calculateRows(5, true));
taskArray[3] = new Task(() => calculateRows(7, true));
foreach (Task t in taskArray) t.Start();
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing task-parallel-library

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

按1个键阵列排序8个数组,加上发出姓氏名字,排序

代码如下.想法是对Last name数组进行排序,并使所有数据相对于姓氏移动,所以这里是示例数据:

         Amy    Wilson  21  68.5    190 150 10
         Scott  Wilson  25  76.5    250 210 10
         Jamie  Scott   45  62  150 135 56
         Sharon Baxter  52  65  150 140 8
         Brock  Stanley 65  70  180 190 4
         Baxter Cash    18  72  170 200 8
         John   Stanford    30  74  190 210 7
         Angel  Delgado 25  62.5    150 137 5
         Brad   Harris  55  70  200 180 6
         Amber  Carrell 18  65  120 110 3
         Jakob  Neihaus 20  64  110 120 3
         Willie …
Run Code Online (Sandbox Code Playgroud)

c#

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

如何动态构建对象的属性

看来,新的"动态"对象让您可以动态创建属性:

dynamic v = new object();
v.x = "a";
v.y = "b";
...
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种简单的方法以编程方式创建属性.例如,假设我的属性存储在列表中,如下所示:

Tuple<string, string>[] list = new Tuple<string, string>[] {
  new Tuple<string, string>("x", "a"),
  new Tuple<string, string>("y", "b"),
};
Run Code Online (Sandbox Code Playgroud)

我想迭代这个列表并获得与之前相同的结果.

dynamic v = new object();
foreach (Tuple<string, string> keyValue in list) {
    // somehow create a property on v that is named keyValue.Item1 and has a value KeyValue.Item2            
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是否可能.

.net dynamic

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

Parallel.Foreach vs Foreach用于数据迁移过程

我有一份车辆清单......对于每辆车,我正在做一些移民工作.

foreach (vehicles)
{

1 : Do database table migration for that vehicle
2 : Call an API and save them to database

}
Run Code Online (Sandbox Code Playgroud)

为了提高性能,我将其平行如下:

Parallel.Foreach(vehicles)
{
--same
}
Run Code Online (Sandbox Code Playgroud)
  1. 这是正确的方法吗?因为我的理解是,它将为每个请求的车辆创建新的线程,事情应该快速.

  2. 并行TASK会改进吗?

  3. 保持最大并行数是否好?如果是,如何确定该因素?

c# asp.net parallel-processing performance parallel.foreach

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