小编Lar*_*rry的帖子

如何正确使用Oracle ORDER BY和ROWNUM?

我很难将存储过程从SQL Server转换为Oracle,以使我们的产品与之兼容.

我有查询根据时间戳返回一些表的最新记录:

SQL Server:

SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
Run Code Online (Sandbox Code Playgroud)

=>这将使我回到最近的记录

甲骨文:

SELECT *
FROM raceway_input_labo 
WHERE  rownum <= 1
ORDER BY t_stamp DESC
Run Code Online (Sandbox Code Playgroud)

=>那将返回最旧的记录(可能取决于索引),无论ORDER BY声明如何!

我以这种方式封装了Oracle查询以满足我的要求:

SELECT * 
FROM 
    (SELECT *
     FROM raceway_input_labo 
     ORDER BY t_stamp DESC)
WHERE  rownum <= 1
Run Code Online (Sandbox Code Playgroud)

它的工作原理.但这听起来像是一个可怕的黑客,特别是如果我在相关的表格中有很多记录.

实现这一目标的最佳方法是什么?

sql oracle sql-order-by rownum

110
推荐指数
3
解决办法
26万
查看次数

"不要在这个热代码路径中使用StringBuilder或foreach"

我正在浏览开源SignalR项目的源代码,我看到这个名为"不要在这个热代码路径中使用StringBuilder或foreach"的差异代码:

-           public static string MakeCursor(IEnumerable<Cursor> cursors)
+           public static string MakeCursor(IList<Cursor> cursors)
            { 
-               var sb = new StringBuilder();
-               bool first = true;
-               foreach (var c in cursors)
+               var result = "";
+               for (int i = 0; i < cursors.Count; i++)
                {
-                   if (!first)
+                   if (i > 0)
                    {
-                       sb.Append('|');
+                       result += '|';
                    }
-                   sb.Append(Escape(c.Key));
-                   sb.Append(',');
-                   sb.Append(c.Id);
-                   first = false; …
Run Code Online (Sandbox Code Playgroud)

.net optimization foreach stringbuilder signalr

32
推荐指数
1
解决办法
1902
查看次数

寻找C#相当于scanf

我以前习惯用C语言编写代码,发现这个scanf函数非常有用.不幸的是,C#中没有相应的东西.

我正在使用它来解析半结构化文本文件.

我在这里找到了一个有趣的scanf实施例子.不幸的是,它看起来陈旧且不完整.

有谁知道scanfC#实现?或者至少可以作为逆转的东西string.Format

c# scanf

31
推荐指数
4
解决办法
5万
查看次数

合并XDocument中的XML文件

我试图在一个XDocument对象中合并几个XML文件.

XDocument对象中不存在合并.我想念这个.

有没有人已经为XDocument实现了一个Merge扩展方法,或类似的东西?

c# xml linq-to-xml

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

构建时出现.NET Core错误:错误MSB4062 Microsoft.Build.Tasks.ResolveComReference

我正在研究一个.net核心网络应用程序(针对net461).该应用程序需要引用COM DLL.

我添加了COM引用,应用程序仍然构建在我的开发机器上.但是,在构建服务器上,它无法使用此错误构建:

C:\ Program Files(x86)\ dotnet\sdk\2.0.0\Microsoft.Common.CurrentVersion.targets(2604,5):错误MSB4062:无法从"Microsoft.Build.Tasks.ResolveComReference"任务加载程序集Microsoft.Build.Tasks.Core

搜索了一下后,似乎这是一个非常罕见的错误.任何人都知道错误是什么和/或如何解决它?


更新:似乎dotnet CLI不支持COM引用.Visual Studio直接在后台使用msbuild,但在构建服务器上,我使用的是dotnet CLI命令.

解决方法:

  1. 引用COM dll并重建.Visual Studio将生成一个interop dll.它将被命名为Interop.MyComDLL.dll.它位于构建输出目录中.
  2. 将生成的Interop dll复制到应用程序中的某个位置(我只是在根应用程序级别使用了/ dlls文件夹).
  3. 删除COM dll参考.
  4. 在Interop dll中添加直接引用(依赖项>添加引用...>在Visual Studio中浏览)

c# asp.net-mvc .net-core asp.net-core

12
推荐指数
1
解决办法
2283
查看次数

为什么.NET应用程序的内存使用量在最小化时似乎会下降?

例如,启动Paint.NET.然后使用任务管理器查看其内存使用情况:在我的计算机上,它使用36Mb.

然后最小化Paint.NET:现在它只需要多于1Mb.

这适用于每个.NET应用程序..NET应用程序最小化后会发生什么?是GC发生的吗?

.net memory garbage-collection

11
推荐指数
1
解决办法
1357
查看次数

使用真实世界单位而不是类型

我有一个涉及许多现实世界单位的许多计算项目:

  • 距离;
  • 温度;
  • 流量;
  • ...

该项目涉及复杂而众多的计算公式.

这就是为什么我认为使用像Temperature,Distance ...... 这样的自定义类型可以提高代码的可读性.例如:

Temperature x = -55.3;
Meter y = 3;
Run Code Online (Sandbox Code Playgroud)

要么

var x = new Temperature(-55.3);
Run Code Online (Sandbox Code Playgroud)

我试图制作一个使用双内部值的Temperature类.

public class Temperature
{
    double _Value = double.NaN;

    public Temperature() { }

    public Temperature(double v) {
        _Value = v;
    }

    public static implicit operator Temperature(double v) {
        return new Temperature(v);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是类可以为空.这意味着:

Temperature myTemp;
Run Code Online (Sandbox Code Playgroud)

是"正确的",将为空.我不想要这个.我不想使用结构,因为它们太有限了:

  • 他们不能使用无参数构造函数或实例字段初始化器double _Value = double.Nan;来定义默认值(我的默认底层double值为NaN)
  • 它们不能从类继承,它们只能实现接口

我想知道是否有办法告诉C#:

Temperature myTemp = 23K; // C# does not implement …
Run Code Online (Sandbox Code Playgroud)

c# types units-of-measurement

10
推荐指数
2
解决办法
1997
查看次数

ItemsControl,VirtualizingStackPanel和ScrollViewer高度

我想使用ItemsControl显示重要的项目列表.

我正在使用ItemsControl的原因是DataTemplate在我正在处理的应用程序中要复杂得多:提供的示例代码仅反映了我的调整问题.

我想要 :

  • 要进行虚拟化的ItemsControl,因为要显示许多项目
  • 它的大小自动扩展到其父容器(Grid)

    <Grid>
        <ItemsControl x:Name="My" ItemsSource="{Binding Path=Names}">
            <ItemsControl.Template>
                <ControlTemplate>
                    <StackPanel>
                        <StackPanel>
                            <TextBlock Text="this is a title" FontSize="15" />
                            <TextBlock Text="This is a description" />
                        </StackPanel>
                        <ScrollViewer CanContentScroll="True" Height="400px">
                            <VirtualizingStackPanel IsItemsHost="True" />
                        </ScrollViewer>
                    </StackPanel>
                </ControlTemplate>
            </ItemsControl.Template>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
    
    Run Code Online (Sandbox Code Playgroud)

背后的代码是:

public partial class Page1: Page
{
    public List<string> Names { get; set; }
    public Page1()
    {
        InitializeComponent();

        Names = new List<string>();
        for(int i = 0; i < 10000; i++)
            Names.Add("Name : …
Run Code Online (Sandbox Code Playgroud)

wpf itemscontrol scrollviewer virtualizingstackpanel

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

每次更新服务引用时,如何阻止VS2010创建新绑定?

我正在使用C#3.5和Visual Studio 2010中的WCF服务开发Winforms客户端应用程序.

每次我在IDE中使用" 更新服务引用 "时,考虑到我已经有一个工作绑定app.config,会生成一个具有相同名称和尾随"1"的附加绑定条目.

我在客户端的app.config是:

<bindings>
  <wsHttpBinding>
     <binding name="WSHttpBinding_IIssueTracker" closeTimeout="00:01:00"...
Run Code Online (Sandbox Code Playgroud)

在"更新服务参考"之后,我有:

<bindings>
  <wsHttpBinding>
     <binding name="WSHttpBinding_IIssueTracker" closeTimeout="00:01:00"...
     <binding name="WSHttpBinding_IIssueTracker1" closeTimeout="00:01:00"...
Run Code Online (Sandbox Code Playgroud)

所以我需要一直删除这个未使用的绑定.

这让我疯狂.有没有办法禁用这种行为?

wcf app-config wcf-binding visual-studio-2010

9
推荐指数
1
解决办法
745
查看次数

如何使用C#推送密钥并将其释放?

我正在编写一个C#程序,它捕获来自外部设备的信号,并将键击发送到另一个应用程序.我正在使用SendKeys,它工作正常.

SendKeys通过按住并立即释放它来"按下"一个键.我想按下它并随意释放它.

我的问题是:"有没有办法向一个键发送"推"信号,然后在一定时间后发出"释放"信号?"

我不确定SendKeys是否能够做到这一点.任何线索?

c# keyboard

8
推荐指数
1
解决办法
5301
查看次数