小编Moo*_*ght的帖子

SQL NVARCHAR和VARCHAR限制

总之,我有一个很大的(不可避免的)动态SQL查询.由于选择标准中的字段数,包含动态SQL的字符串增长超过4000个字符.现在,我知道有一个4000最大值设置NVARCHAR(MAX),但查看Server Profiler中执行的SQL语句

DELARE @SQL NVARCHAR(MAX);
SET @SQL = 'SomeMassiveString > 4000 chars...';
EXEC(@SQL);
GO
Run Code Online (Sandbox Code Playgroud)

似乎工作(!?),对于另一个同样大的查询,它会抛出一个与此4000限制(!?)相关的错误,它基本上修剪了这个4000限制之后的所有SQL,并且给我留下了语法错误.尽管这样的探查,它表示在这个动态的SQL查询(!?).

究竟发生了什么,我应该将这个@SQL变量转换为VARCHAR并继续使用它吗?

谢谢你的时间.

PS.能够打印超过4000个字符来查看这些大查询也是很好的.以下限制为4000

SELECT CONVERT(XML, @SQL);
PRINT(@SQL);
Run Code Online (Sandbox Code Playgroud)

还有其他很酷的方式吗?

sql sql-server variables string-concatenation sql-server-2008

97
推荐指数
2
解决办法
17万
查看次数

SpinWait与睡眠等待.哪一个使用?

是否有效率

SpinWait.SpinUntil(() => myPredicate(), 10000)
Run Code Online (Sandbox Code Playgroud)

超时10000毫秒

要么

Thread.Sleep在相同条件下使用轮询是否更有效例如,以下SleepWait函数的行:

public bool SleepWait(int timeOut)
{
    Stopwatch stopwatch = new Stopwatch(); 
    stopwatch.Start();
    while (!myPredicate() && stopwatch.ElapsedMilliseconds < timeOut)
    {
       Thread.Sleep(50)
    }  
    return myPredicate()
}
Run Code Online (Sandbox Code Playgroud)

我担心如果我们谈论超过1秒的超时,SpinWait的所有收益可能都不是一个好的使用模式?这是一个有效的假设吗?

您更喜欢哪种方法?为什么?还有另一种更好的方法吗?


更新 - 变得更具体:

有没有办法让BlockingCollection Pulse在达到有界容量时成为睡眠线程?正如Marc Gravel建议的那样,我宁愿避免忙碌等待.

c# multithreading

70
推荐指数
2
解决办法
6万
查看次数

通用智能感知的全新实现

我有兴趣为SQL和C#编写一个通用的Intellisense启用编辑器(如果可能,等等!).我想在C#中将其作为重写或扩展的WPF richTextBox类型控件.我知道有很多可用的示例项目,我已经实现了我自己的基本版本; 但我遇到的大多数例子(实际上是我自己的)都是基本的.

一些代码示例如下:

  1. DIY Intellisense by yetanotherchris

  2. CodeTextBox - 另一个带语法高亮的RichTextBox控件和Intellisense By Tamas Honfi

然而,我发现了一个很好的SQL编辑器的例子,其中包含Intellisense QueryCommander SQL编辑器,由MikaelHåkansson提供,它似乎运行良好.Microsoft必须使用命令关键字的XML库,但我的问题是:Microsoft如何(详细地)实现他们的智能感知(as-you-type Intellisense)以及创建我自己的同一标准有多难?


编辑答:一年过去了,我已经设法用基本的智能感知开发我自己的编辑器控件,主要是为了我自己的"享受".我想我会回来提供一个免费提供的.NET项目列表,帮助我自己开发,可以开箱即用,免费:

  1. ICSharpCode(WinForms)

  2. AvalonEdit(WPF)

  3. ScintillaNET(WinForms)

  4. Query Commander [例如intellisense implementation](WinForms)


编辑B:提问后15个月,我仍在寻找新的改进编辑.这个很好......

  1. RoslynPAD很酷!

编辑C:问题2年以上,我发现了以下项目,两者都使用WPF并由AvalonEdit支持.

  1. 使用NRefactory的AvalonEdit的CodeCompletion.这个项目非常好,并且使用NRefactory完全实现了intellisense.

  2. ScriptCS ScriptCS使用简单的文本编辑器轻松编写和执行C#.

c# wpf intellisense

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

WPF按钮中的图像在运行时不可见

全部,我有一个小应用程序,它检查.resx文件以确保嵌入式括号的一致性(以便不会发生不匹配的"... {0}"字符串的运行时错误).我有MainWindow.xaml的以下XAML,我的特殊问题涉及按钮上显示的图像

<Window x:Class="ResxChecker.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="174.383" Width="495.869">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="350*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="30*"/>
        </Grid.RowDefinitions>
        <Label Content="Select .resx file:" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" Height="24" Width="Auto" Grid.ColumnSpan="1"/>
        <TextBox Grid.ColumnSpan="2" HorizontalAlignment="Stretch" Margin="10,0,0,0" Grid.Row="1" TextWrapping="Wrap" Text="" VerticalAlignment="Top"/>
        <Button Grid.Column="2" HorizontalAlignment="Right" Margin="5,0,10,0" Grid.Row="1">
            <Image VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="16 " Width="16" Source="pack://siteoforigin:,,,/Resources/UserCost2013Open16.png"/>
        </Button>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

图像具有"构建操作=资源","复制到输出目录=不复制" - 图像显示在设计器中但不在运行时显示.我已经看到了以下问题并阅读了相关答案,但没有解决问题:

  1. 应用程序使用时不显示WPF控件图像

  2. wpf中的图像问题(图像没有显示)

  3. 没有显示在WPF的按钮的背景图象

如何让按钮图像在运行时出现?

c# wpf image button

50
推荐指数
6
解决办法
7万
查看次数

红黑树的应用

红黑树的应用是什么?是否有任何应用程序只能使用RB树而没有其他数据结构?

algorithm tree red-black-tree data-structures

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

使用Microsoft.Office.Interop.Excel SaveAs Error导出到.xlsx

我正在编写一个模块,用于将DataTable导出到Excel,Microsoft.Office.Interop.Excel但在开始认真之前,我想让基本工作正常工作:打开文件,另存为,关闭.

我已成功打开并保存扩展名为.xls的文件,但使用.xlsx扩展名保存不起作用.它写.xlsx文件,但当我尝试打开它时,我收到以下错误:

Excel无法打开文件'SomeFile.xlsx',因为文件格式无效.验证文件是否已损坏,文件扩展名是否与文件格式匹配.

我用来打开,保存和关闭文件的代码是:

Excel.Application excelApplication = new Excel.Application();
//excelApplication.Visible = true;
//dynamic excelWorkBook = excelApplication.Workbooks.Add();
Excel.Workbook excelWorkBook = excelApplication.Workbooks.Add();
//Excel.Worksheet wkSheetData = excelWorkBook.ActiveSheet;
int rowIndex = 1; int colIndex = 1;
excelApplication.Cells[rowIndex, colIndex] = "TextField";

// This works.
excelWorkBook.SaveAs("C:\\MyExcelTestTest.xls", Excel.XlFileFormat.xlWorkbookNormal,
    System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false,
    Excel.XlSaveAsAccessMode.xlShared, false, false, System.Reflection.Missing.Value,
    System.Reflection.Missing.Value, System.Reflection.Missing.Value);

// This does not!?
excelWorkBook.SaveAs("C:\\MyExcelTestTest.xlsx", Excel.XlFileFormat.xlWorkbookNormal, 
    System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false, 
    Excel.XlSaveAsAccessMode.xlShared, false, false, System.Reflection.Missing.Value, 
    System.Reflection.Missing.Value, System.Reflection.Missing.Value);

excelWorkBook.Close(Missing.Value, Missing.Value, Missing.Value);
Run Code Online (Sandbox Code Playgroud)

我也尝试了文件格式Excel.XlFileFormat.xlExcel12代替,Excel.XlFileFormat.xlWorkbookNormal但这甚至没有写,而是抛出COMException:

来自HRESULT的异常:0x800A03EC

解决这个问题的任何帮助都将非常受欢迎.

编辑:我现在也尝试过: …

c# excel winforms-interop

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

使用MVVM双向绑定到AvalonEdit文档文本

我想在TextEditor我的MVVM应用程序中包含一个AvalonEdit 控件.我要求的第一件事是能够绑定到TextEditor.Text属性,以便我可以显示文本.为此,我遵循了Make AvalonEdit MVVM兼容的示例.现在,我已使用接受的答案作为模板实现了以下类

public sealed class MvvmTextEditor : TextEditor, INotifyPropertyChanged
{
    public static readonly DependencyProperty TextProperty =
         DependencyProperty.Register("Text", typeof(string), typeof(MvvmTextEditor),
         new PropertyMetadata((obj, args) =>
             {
                 MvvmTextEditor target = (MvvmTextEditor)obj;
                 target.Text = (string)args.NewValue;
             })
        );

    public new string Text
    {
        get { return base.Text; }
        set { base.Text = value; }
    }

    protected override void OnTextChanged(EventArgs e)
    {
        RaisePropertyChanged("Text");
        base.OnTextChanged(e);
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void RaisePropertyChanged(string info)
    {
        if (PropertyChanged != null) …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding mvvm avalonedit

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

在DataTable过滤器表达式中转义字符的正确方法

我想知道是否有一个函数来正确地转义过滤器表达式的字符串文字.例如:

DataTable.Select(String.Format("[name] = '{0}'", MyName))
Run Code Online (Sandbox Code Playgroud)

如果MyName包含'或许多其他关键字符,则会生成异常.在微软的文档表明,这些charaters应正确逃脱,但没有对如何,这是做了一些混乱.

我已经尝试用文档中的指示替换'with \'和['],但查询仍然失败.

非常感谢

.net ado.net

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

在RunTime中更改WPF DataGrid的整个列的背景颜色

总而言之,我对WPF相对较新.我一直在寻找答案,但我发现的是如何在运行时对行进行着色而不是列; 例如以下问题:

  1. 更改WPF Datagrid行颜色

  2. 如何以编程方式更改WPF中的数据网格行颜色?

  3. 以编程方式为DataGrid中的行指定颜色

  4. 根据值更改DataGrid单元格颜色

等.

我已经CellStyleMSDN DataGrid页面上看到了该属性,但它的使用对我来说并不明显,尽管搜索它也是如此.

如何在运行时更改整列的背景颜色?

谢谢你的时间.

c# wpf datagrid colors

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

使用MVVM的MahApps MessageBoxes

MahApps Merry Men的简单问题.我已经使用Caliburn.Micro使用你的伟大的地铁风格的控件实现了MVVM的应用程序.新的消息对话框看起来很棒,但目前还没有明确的方法来启动这些对话框而不用编写自己的包装器(我不反对).但是,这已经完成或者是否有我遗漏的东西,以便我可以从视图模型中调用消息框而不用大惊小怪?

谢谢你的时间.

c# wpf mvvm caliburn.micro mahapps.metro

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