小编Dav*_*ale的帖子

按许多字段订购清单(C#)?

我想在许多字段中订购C#中的对象列表,而不仅仅是一个.例如,假设我有一个名为X的类,它有两个属性A和B,我按顺序有以下对象:

object1 => A ="a",B ="h"
object2 => A ="a",B ="c"
object3 => A ="b",B ="x"
object4 => A ="b" ,B ="b"

我想首先按A属性排序列表,当它们等于时,按B元素排序,所以顺序为:

"a""c"
"a""h"
"b""b"
"b""x"

据我所知,OrderBy方法按一个参数排序.

问题:如何通过多个字段订购C#列表?

非常感谢你

c# lambda list sql-order-by

91
推荐指数
3
解决办法
10万
查看次数

从Mongo获取BinData UUID作为字符串

我目前在Mongo中存储了一些ID作为UUID(处理所必需的).他们像这样返回:

"_id" : new BinData(3, "JliB6gIMRuSphAD2KmhzgQ==")
Run Code Online (Sandbox Code Playgroud)

将此值转换为字符串进行调试的简单方法是什么?

需要明确的是 - 应用程序可以很好地处理数据.我只需要一种快速从Mongo获取实际UUID的方法.

mongodb

45
推荐指数
3
解决办法
4万
查看次数

将标记的枚举解析为列表的最有效方法

我有一个标记的枚举,需要检索其上设置的所有值的名称.

我目前正在利用枚举的ToString()方法,该方法返回以逗号分隔的元素.

    public void SetRoles(Enums.Roles role)
    {
        IList<Entities.Role> roleList = role.ToString("G").Split(',')
            .Select(r => new Entities.Role(r.Trim()))
            .ToList();
    ...
    }
Run Code Online (Sandbox Code Playgroud)

我敢肯定必须有比这更好的方法.

c# enums

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

结合foreach和使用

我正在迭代一个ManageObjectCollection.(这是WMI接口的一部分).

但重要的是,以下代码行.:

foreach (ManagementObject result in results)
{
    //code here
}
Run Code Online (Sandbox Code Playgroud)

关键是ManageObject也实现了IDisposable,所以我想把"result"变量放在using块中.关于如何做到这一点的任何想法,而不是太奇怪或复杂?

c# foreach idisposable using

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

'x.cs'中的类型'x'与导入的类型'x'冲突

导致此构建错误的原因是什么?

类型' AriaLibrary.AriaBL.Book '中

'I:\编程\ MyProgram \图书馆\ AriaNetDelijanCorporation\AriaLibrary\AriaBL\AriaBL.cs'

与导入类型冲突

'AriaLibrary.AriaBL.Book'中

'I:\编程\ MyProgram \图书馆\ AriaNetDelijanCorporation\AriaLibrary\BIN \调试\ AriaLibrary.exe'.

使用'I:\ Programing\MyProgram\Library\AriaNetDelijanCorporation\AriaLibrary\AriaBL\AriaBL.cs'中定义的类型.

我:\编程\ MyProgram\Library\AriaNetDelijanCorporation\AriaLibrary\UI\Document\Book\frm_AddNewBookISO.cs 24 16 AriaLibrary

c#

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

如何在不丢失堆栈跟踪的情况下重新抛出TargetInvocationException的内部异常

我有许多方法正在调用Delegate.DynamicInvoke.其中一些方法会进行数据库调用,我希望能够捕获一个SqlException而不是TargetInvocationException通过它的内部捕获并查找实际出错的方法.

我正在使用此方法重新抛出但它清除了堆栈跟踪:

 try
 {
      return myDelegate.DynamicInvoke(args);
 }
 catch(TargetInvocationException ex)
 {
     Func<TargetInvocationException, Exception> getInner = null;
     getInner =
        delegate(TargetInvocationException e)
        {
        if (e.InnerException is TargetInvocationException)
            return getInner((TargetInvocationException) e.InnerException);

         return e.InnerException;
        };

     Exception inner = getInner(ex);
     inner.PreserveStackTrace();
     throw inner;
 }
Run Code Online (Sandbox Code Playgroud)

这个PreserveStackTrace方法是我通过另一个帖子修复的扩展方法(我不知道它实际上做了什么).但是,这似乎不会保留跟踪:

public static void PreserveStackTrace(this Exception e)
{
    var ctx = new StreamingContext(StreamingContextStates.CrossAppDomain);
    var mgr = new ObjectManager(null, ctx);
    var si = new SerializationInfo(e.GetType(), new FormatterConverter());

    e.GetObjectData(si, ctx);
    mgr.RegisterObject(e, 1, si);
    mgr.DoFixups(); 
}
Run Code Online (Sandbox Code Playgroud)

c# exception-handling stack-trace targetinvocationexception inner-exception

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

DataReader - 硬编码序数?

DataReaderI 返回数据时,通常会使用序号引用DataReader来获取相关列:

if (dr.HasRows)         
   Console.WriteLine(dr[0].ToString());
Run Code Online (Sandbox Code Playgroud)

要么

if (dr.HasRows)         
   Console.WriteLine(dr.GetString(0));
Run Code Online (Sandbox Code Playgroud)

要么

if (dr.HasRows)         
   Console.WriteLine((string)dr[0]);
Run Code Online (Sandbox Code Playgroud)

我一直这样做是因为我在早期阶段被告知使用dr["ColumnName"]或更优雅的索引方式会导致性能下降.

然而,尽管对数据实体的所有引用都变得越来越强烈,但我对此感到更加不安.我也知道上面没有检查DBNull.

从数据库中返回数据最有效的方法是DataReader什么?

.net c# datareader sqldatareader

15
推荐指数
2
解决办法
3891
查看次数

C# - 为什么System.IO.File.GetLastAccessTime在找不到文件时返回预期值?

请解释一下你的想法.

1.  DateTime dt = System.IO.File.GetLastAccessTime("C:\\There_is_no_such_file.txt");
2.  DateTime dt = System.IO.File.GetLastAccessTime("");
Run Code Online (Sandbox Code Playgroud)
  1. 如果path参数中描述的文件不存在,则此方法返回到公元1601年1月1日午夜12点(CE)协调世界时(UTC),调整为当地时间.

  2. 在第二种情况下抛出参数异常.

为什么在第一种情况下不抛出FileNotFoundException(或smth.simmilar)?

c# error-handling exception

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

如何解决MVC Filter属性中的依赖注入问题

我有一个派生自AuthorizationAttribute的自定义属性类,它对控制器操作执行自定义安全性.OnAuthorizationCore方法依赖于各种其他组件(例如DAL)以判断用户是否可以调用操作.

我正在使用Autofac进行依赖注入.ExtensibleActionInvoker声称能够在动作过滤器上执行属性注入.在运行时设置属性的属性(这似乎是一个坏主意)将在一个简单的单元测试中工作,但在繁忙的多线程Web服务器中它肯定会出错,所以这个想法似乎是一种反模式.因此这个问题:

如果我的AuthorizationAttribute依赖于其他组件才能正常工作,那么正确的[架构]模式是什么才能实现这一目标?

即AuthorizationAttribute取决于IUserRepository ...如何这种关系来解决?

asp.net-mvc dependency-injection filter autofac

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

数组/列表/集合的变量命名 - C#

我应该用某种类型的数组实例化变量?

简单地使用所持有的复数形式是否可以?

IList<Person> people = new List<Person>();

或者我应该在名称上添加"List"之类的东西?

IList<Person> personList = new List<Person>();

此外,这样的循环通常是否可以接受?

foreach(string item in items)
{ 
    //Do something 
}
Run Code Online (Sandbox Code Playgroud)

.net c# naming-conventions

12
推荐指数
2
解决办法
8785
查看次数