我想在许多字段中订购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#列表?
非常感谢你
我目前在Mongo中存储了一些ID作为UUID(处理所必需的).他们像这样返回:
"_id" : new BinData(3, "JliB6gIMRuSphAD2KmhzgQ==")
Run Code Online (Sandbox Code Playgroud)
将此值转换为字符串进行调试的简单方法是什么?
需要明确的是 - 应用程序可以很好地处理数据.我只需要一种快速从Mongo获取实际UUID的方法.
我有一个标记的枚举,需要检索其上设置的所有值的名称.
我目前正在利用枚举的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)
我敢肯定必须有比这更好的方法.
我正在迭代一个ManageObjectCollection.(这是WMI接口的一部分).
但重要的是,以下代码行.:
foreach (ManagementObject result in results)
{
//code here
}
Run Code Online (Sandbox Code Playgroud)
关键是ManageObject也实现了IDisposable,所以我想把"result"变量放在using块中.关于如何做到这一点的任何想法,而不是太奇怪或复杂?
导致此构建错误的原因是什么?
类型' 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
我有许多方法正在调用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
从DataReader
I 返回数据时,通常会使用序号引用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
什么?
请解释一下你的想法.
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)
如果path参数中描述的文件不存在,则此方法返回到公元1601年1月1日午夜12点(CE)协调世界时(UTC),调整为当地时间.
在第二种情况下抛出参数异常.
为什么在第一种情况下不抛出FileNotFoundException(或smth.simmilar)?
我有一个派生自AuthorizationAttribute的自定义属性类,它对控制器操作执行自定义安全性.OnAuthorizationCore方法依赖于各种其他组件(例如DAL)以判断用户是否可以调用操作.
我正在使用Autofac进行依赖注入.ExtensibleActionInvoker声称能够在动作过滤器上执行属性注入.在运行时设置属性的属性(这似乎是一个坏主意)将在一个简单的单元测试中工作,但在繁忙的多线程Web服务器中它肯定会出错,所以这个想法似乎是一种反模式.因此这个问题:
如果我的AuthorizationAttribute依赖于其他组件才能正常工作,那么正确的[架构]模式是什么才能实现这一目标?
即AuthorizationAttribute取决于IUserRepository ...如何应这种关系来解决?
我应该用某种类型的数组实例化变量?
简单地使用所持有的复数形式是否可以?
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) c# ×8
.net ×2
asp.net-mvc ×1
autofac ×1
datareader ×1
enums ×1
exception ×1
filter ×1
foreach ×1
idisposable ×1
lambda ×1
list ×1
mongodb ×1
sql-order-by ×1
stack-trace ×1
using ×1