草庐IT

c# - 检查字符串是否包含任何顺序的特定字符

我可以解释我正在尝试做的事情的最好方法是举一个例子:我的数据库中有一个字符串StackOverflow,当用户键入OAW时,我想返回该字符串以及以任何顺序包含这三个字符的任何其他单词.我试过各种LINQ/Lambda表达式,但无济于事。query.Where(a=>a.SerialNumber.Contains(a));我找到了一个帖子hereonSO看起来与我的相似,但它是用Java编写的。我觉得我正在尝试做的事情实现起来非常简单,但我只是想念它。任何帮助将不胜感激。 最佳答案 你可以尝试这样的事情:query.Where(str

c# - 使用嵌套方法时奇怪的执行顺序,yield return 和组合使用

这个问题在这里已经有了答案:yieldreturnstatementinsideausing(){}blockDisposesbeforeexecuting(2个答案)关闭8年前。我无法理解为什么Program.Fetch1和Program.Fetch2不会产生完全相同的执行顺序。唯一的区别是Program.Fetch1正在调用Program.Fetch来执行实际的提取操作。classProgram{staticIEnumerableFetch1(){using(Contextc=newContext()){returnFetch(c);}}staticIEnumerableFetch

c# - 如何更改 Wpf AdornerLayer 子项的 z 顺序?

我有一个图像编辑应用程序,我有自定义装饰器,这些装饰器被添加到AdornerLayer。当用户点击一个装饰器时,我想将它带到顶部-这意味着如果它被拖到另一个装饰器上,我希望第一次点击被最上面的装饰器捕获。我不知道如何更改AdornerLayer的子元素的z顺序。它似乎不允许我对它们进行排序。即使我删除并重新添加装饰器,它也不会达到最顶层。 最佳答案 我遇到了类似的问题,但只需要对我的装饰器进行特定排序。我最终使用反射来设置订单:varsetZOrderMethodInfo=adornerLayer.GetType().GetMeth

c# - IOrderedEnumerable.Select() 会保留元素顺序吗?

在C#中,使用Select()投影IOrderedEnumerable的元素是否会保留元素顺序?如果是这样,它为什么会返回一个IEnumerable,而不是一个IOrderedEnumerable?如果没有,我该如何实现(除了使用foreach)?请注意,此问题不是thisone的重复问题-我只有一个Select()子句,没有Distinct()。编辑是的,它是LINQtoObjects。顺便说一句,如果我实际上是在查询一些SQLDB,答案会有什么不同吗? 最佳答案 Select不改变元素顺序。这是一个streamingoperat

c# - 为什么在这个简单的测试中,方法的速度与触发顺序有关?

我一直在做其他实验,直到这种奇怪的行为引起了我的注意。代码在x64版本中编译。如果键入1,List方法的第3次运行比前2次多花费40%的时间。输出是Listcosts9312Listcosts9289Arraycosts12730Listcosts11950如果键入2,Array方法的第3次运行比前2次多花费30%的时间。输出是Arraycosts8082Arraycosts8086Listcosts11937Arraycosts12698可以看到模式,完整的代码附在下面(编译运行即可):{提供的代码对于运行测试来说是最少的。用于获得可靠结果的实际代码更复杂,我包装了该方法并在适当预热

c# - Windows 服务中的方法调用顺序

Windows服务中方法调用的顺序是什么?我们遇到了时间问题,我认为这是由于构造函数完成处理的时间太长。我认为我们遇到了类似的问题Error1053theservicedidnotrespondtothestartorcontrolrequest但是,我们想知道Main、OnStart、InitializeComponent等方法以什么顺序以及何时被调用和/或它们应该何时被调用。另外,OnStart方法是否是放置所有处理的最佳位置?**解决方案花了一些时间进行测试服务并测试了下面的响应,发现超时来自Main方法处理以及在Main方法中调用的构造函数导致它超时。将所有内容移至OnStar

c# - 如何根据顺序排序

假设我有元素items:[{id:1,...},{id:2,...},{id:3,...}]并且有排序:[2,3,1]得到一个可枚举的items:[{id:2,...},{id:3,...},{id:1,...}]我希望它符合items.Select(o=>new{key=ordering[i++],value=o}).OrderBy(k=>k.key).Select(o=>o.value)但是有更清洁的解决方案吗?以下我已经验证了该工作(HimBromBeere、Domysee、qxg)varexpectedOrder=ordering.Select(x=>result.First(

c# - .NET 中对以 1、10 和 2 开头的字符串进行排序并遵守数字顺序的最短方法是什么?

我需要按如下方式对文件名进行排序:1.log、2.log、10.log但是当我使用OrderBy(fn=>fn)时,它会将它们排序为:1.log,10.log,2.log我显然知道这可以通过编写另一个比较器来完成,但是有没有一种更简单的方法可以将字典顺序更改为自然排序顺序?编辑:目标是获得与在Windows资源管理器中选择“按名称排序”时相同的顺序。 最佳答案 您可以使用Win32CompareStringEx功能。在Windows7上,它支持您需要的排序。您将使用P/Invoke:staticreadonlyInt32NORM_I

c# - 字典枚举顺序

文档说Dictionary键顺序未指定。我想这意味着第一个添加的元素在枚举期间可能不是第一个。但是Dictionary是否保证我每次枚举它时的顺序都相同? 最佳答案 是的,目前它确实以相同的顺序返回项目(假设您在此期间没有触发哈希表的大小调整)。不,你不应该依赖它。一般来说,除非明确保证顺序保持不变,否则您不能假设任何。这样的保证肯定是isnotgiven:Theorderinwhichtheitemsarereturnedisundefined.如果您出于学术目的对详细信息感兴趣,请参阅this优秀的博文。

c# - 分隔数字范围,如果按顺序则用连字符,如果顺序中断则用逗号字符

我有一个表示页码的字符串,如1,2,3,4,8,9,10,15。我希望它显示为1-4,8-​​10,15,即序列中的数字由连字符分隔,连字符由序列中的最小和最大数字括起来。如果顺序打断,范围用逗号隔开。stringpageNos="5,6,7,9,10,11,12,15,16";stringresult=string.Empty;string[]arr1=pageNos.Split(',');int[]arr=newint[arr1.Length];for(intx=0;x 最佳答案 我认为循环中的循环让事情变得更加困惑。尝试只使用