private int StartProcess(SoftwareSvr swSvr, string workingDir) { Process proc = new Process(); proc.StartInfo.UseShellExecute = true; proc.StartInfo.WorkingDirectory = workingDir; proc.StartInfo.FileName = swSvr.Command; if (swSvr.Args != null && swSvr.Args.Any()) { proc.StartInfo.Arguments = string.Join(' ', swSvr.Args); } bool started = proc.Start(); if (started) { return proc.Id; } else { return -1; } } private int StartProcessByPs(SoftwareSvr swSvr, string …
Tag: C#
Aggregate in Mongodb in C#
Filter record from collection “OperationSession”, sort by “WorldId” descending, then group by “WorldId”, then pick first record from each group, then sort result: Way #1: db.getCollection('OperationSession').aggregate( [ { "$match": {"ActivityId":74,"GameId":2109} }, { "$sort":{ "CreateTime" : -1} }, { "$group": { _id:"$WorldId", SessionId:{"$first": "$_id" }, GameId:{"$first": "$GameId" }, WorldId:{"$first": "$WorldId" }, ActivityId:{"$first": "$ActivityId" }, Type:{"$first": "$Type" …
C#中使用反射调用参数中包含Lambda表达式的方法
如下代码片断展示了怎样在C#中使用反射调用参数中包含Lambda表达式的方法: GetData(Expression<Func<ExampleEntity, bool>>), 以及根据条件动态选择无参和有参方法: using System; using System.Linq; using System.Linq.Expressions; using System.Reflection; namespace ReflectCallGenericMethod { class Program { static void Main(string[] args) { Assembly assembly = Assembly.GetExecutingAssembly(); Type typeService = assembly.GetTypes() .Where(t => t.IsClass && t.Name == "ExampleService").SingleOrDefault(); Type typeEntity = assembly.GetTypes() .Where(t => t.IsClass && t.Name == "ExampleEntity").SingleOrDefault(); ParameterExpression paramExp = Expression.Parameter(typeEntity); Expression expression …