小编juh*_*arr的帖子

EF返回的值不同于查询

所以我只是遇到了这个非常奇怪的场景,并想知道是否有人可能知道问题是什么.我有以下EF Linq查询.

var hierarchies = (from hierarchy in ctx.PolygonHierarchyViews
                   where hierarchy.DashboardId == dashboardId
                   select hierarchy);
Run Code Online (Sandbox Code Playgroud)

当我在调试器中检查该查询时,它显示以下SQL

SELECT 
[Extent1].[DashboardId] AS [DashboardId], 
[Extent1].[CurrentId] AS [CurrentId], 
[Extent1].[PolygonTypeId] AS [PolygonTypeId], 
[Extent1].[DisplayName] AS [DisplayName], 
[Extent1].[ParentId] AS [ParentId]
FROM [dbo].[PolygonHierarchyView] AS [Extent1]
WHERE [Extent1].[DashboardId] = @p__linq__0
Run Code Online (Sandbox Code Playgroud)

如果我在SQL Server Management Studio中运行该替代@p__linq__0dashboardId.我得到了这些结果.

DashboardId     CurrentId  Type  Name       ParentId
4               5          1     Region     NULL
4               6          2     Market     NULL
4               7          3     SubMarket  6
4               8          4     ZipCode    7
4               6          2     Market     5
4               7 …
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework

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

增加一个包含字母和数字的字符串

我有一个字符串,我需要增加1字符串有字符和数字值.

我的字符串布局如下"MD00494"

我如何将其增加到"MD00496"和"MD00497"等

如果它是带有数字的普通字符串,我会将其解析为int.

我尝试了以下内容

 int i = int.Parse(sdesptchNo);
 i++;
 txtDispatchNo.Text = i.ToString();
Run Code Online (Sandbox Code Playgroud)

任何想法如何我会这样做.

.net c#

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

C#Static Readonly log4net logger,在Unit Test中改变记录器的方法有哪些?

我的班级有这一行:

private static readonly ILog log = LogManager.GetLogger(typeof(Prim));
Run Code Online (Sandbox Code Playgroud)

当我进行单元测试时,我无法将moq记录器注入此接口,因此我可以计算日志调用.

有没有办法做到这一点?Log4net建议记录器使用静态只读模式.处理它的最佳方法是什么?

c# logging log4net unit-testing moq

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

无法从'void'转换为'System.Action'

将带参数的方法传递给接受Action类型参数的方法会导致语法错误

无法从'void'转换为'System.Action'

但是,如果我传递一个没有任何参数的方法,它可以正常工作.

我假设C#当我传递一个没有参数的方法时会自动执行某些操作.

我想知道它在幕后做了什么,以及如何使用带参数的方法做同样的事情.

public void Invoke(Action action){ /*Code Here */ }

public void Method1(){ /*Code Here */}

public void Method2(int param){ /*Code Here */ }

public void test()
{
    int testParam = 1;
    //** This works
    Invoke(Method1);
    //** This does not work
    Invoke(Method2(testParam));     
}
Run Code Online (Sandbox Code Playgroud)

c# action

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

当引用不在ItemsSource中时,WPF绑定到ComboBox SelectedItem

PageMediaSize将a 的集合绑定PrintQueueItemSourcea ComboBox(这很好).然后我绑定SelectedItemComboBoxDefaultPrintTicket.PageMediaSizePrintQueue.虽然这会将所选值设置为DefaultPrintTicket.PageMediaSize恰好,但它不会将最初选择的值设置为ComboBox初始值.DefaultPrintTicket.PageMediaSize 这是因为DefaultPrintTicket.PageMediaSize引用与集合中的任何引用都不匹配.但是我不希望它通过引用来比较对象,而是通过值来比较,但PageMediaSize不会覆盖Equals(我无法控制它).我真正想做的是设置一个IComparableComboBox使用,但我没有看到任何方法这样做.我试过用一个Converter,但我需要的不仅仅是价值而且我无法弄清楚如何将集合传递给ConverterProperty.关于如何处理这个问题的任何想法.

这是我的xaml

<ComboBox x:Name="PaperSizeComboBox" 
          ItemsSource="{Binding ElementName=PrintersComboBox, Path=SelectedItem, 
                        Converter={StaticResource printQueueToPageSizesConverter}}"
          SelectedItem="{Binding ElementName=PrintersComboBox, 
                         Path=SelectedItem.DefaultPrintTicket.PageMediaSize}"
          DisplayMemberPath="PageMediaSizeName"
          Height="22"
          Margin="120,76,15,0"
          VerticalAlignment="Top"/>
Run Code Online (Sandbox Code Playgroud)

以及获取PageMediaSize集合的转换器的代码

public class PrintQueueToPageSizesConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter,
                          System.Globalization.CultureInfo culture)
    {
        return value == null ? null :
            ((PrintQueue)value).GetPrintCapabilities().PageMediaSizeCapability;
    } …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding combobox

6
推荐指数
1
解决办法
2821
查看次数

使滚动查看器不在WPF中向左捕获控件和向右控制

我有一个WPF应用程序,我已经定义了使用键手势Ctrl+ Ctrl+的自定义命令.我的窗口有a TextBox和a ScrollViewer,当TextBox有焦点时Ctrl+ Ctrl+ 将光标移动到下一个或上一个单词的开头,这很好.

但是在ScrollViewer它上面使水平滚动移动就像我按下了或者.允许Ctrl+ Ctrl+ 事件从我ScrollViewerCommand定义的窗口冒泡的最简单方法是什么?

c# wpf keyboard-shortcuts

6
推荐指数
1
解决办法
3072
查看次数

Resharper重新格式化Linq语句以放入并选择在同一行上

当我输入Linq查询样式语句时

var stuff = from x in things
            group x by x.Something into g
            select g;
Run Code Online (Sandbox Code Playgroud)

Resharper正在重新格式化

var stuff = from x in things
            group x by x.Something
            into g select g;
Run Code Online (Sandbox Code Playgroud)

然后抱怨它,因为它打破了StyleCop规则SA1103.这是Resharper中的错误还是我需要更改一些设置组合以防止它重新格式化?

编辑

JetBrains已确认这是一个错误,它已在8.0版中修复.

c# linq resharper

6
推荐指数
1
解决办法
1914
查看次数

我应该在LINQ中使用OrderByDescending两次吗?

我有这样的产品表: -

ProductID     ProductName     Price
   1            Milk           10
   2            Banana         20
   3            Apple          15
   1            Grapes         12
   2            Banana         25
   1             Milk          8
Run Code Online (Sandbox Code Playgroud)

我想找到每个productId最高价的产品.

样本输出: -

    ProductID     ProductName     Price
       1            Grapes          12
       2            Banana         25
       3            Apple          15
Run Code Online (Sandbox Code Playgroud)

我试过这个查询: -

List<Product> groups = products
    .GroupBy(p => p.ProductId)
    .Select(p => new Product
        {
            ProductId = p.Key,
            Name = p.OrderByDescending(o => o.Price).First().Name,
            Price = p.OrderByDescending(o => o.Price).First().Price,
        })
    .ToList();
Run Code Online (Sandbox Code Playgroud)

这个查询工作正常,但我的问题是我应该使用OrderByDescending两次?我的意思是因为我只想要基于1个属性的单项并假设有多个其他属性,所以我需要一次又一次地使用相同的逻辑吗?

编辑: 原谅我忘了提,请假设ProductName可以不同,请检查更新的表格.

c# linq performance

6
推荐指数
1
解决办法
143
查看次数

WP8大容量内存泄漏

我在一个完全开发的应用程序中遇到内存泄漏的困难时期.C#与MVVM Light 5.我花了整整一周的时间学习如何使用内存分析器,阅读常见的内存泄漏问题等等.我已经把这个问题放了25个小时以上.我仔细清除所有事件处理程序,甚至在BackNavigation之后以及检测到循环导航时将每个页面的DataContext和LayoutRoot置空(我在App.cs中存储最后一个运行的页面实例,当该页面的另一个实例时即将创建,我检查是否已经有一个实例,如果有,我清除它).

我已经筋疲力尽,我不知道从哪里开始.

下面是重复导航2页之后的内存分析屏幕截图的链接.由于某种原因,每个页面的实例都没有被释放,但它们被简化为单纯的字节.

在此输入图像描述

如您所见,我保留的分配与从开始和结束保留的视觉效果之间的差异非常小(总共约30mb).

然而在图中,我看到差不多100mb.

这让我非常疯狂,我认为底层平台在管理这个方面会做得更好.任何帮助是极大的赞赏.

c# memory memory-leaks windows-phone-8

6
推荐指数
1
解决办法
181
查看次数

绑定MenuItem的ItemsSource和IsChecked以获取WPF中可检查项的列表

我正在尝试设置一个MenuItem可以选择的页码子菜单.我想绑定ItemsSource到一个页码列表(实际上是一个创建列表的转换器的PageCount),然后将子菜单IsChecked中每个页面的属性绑定MenuItem到PageIndex.我的问题是第二个绑定,因为它也需要转换器,但转换器需要知道MenuItem代表的页码,但我无法弄清楚如何将该信息传递给转换器.这是我到目前为止所尝试的内容.

<MenuItem Header="_Goto Page" 
          ItemsSource="{Binding 
                        Path=CurrentImage.PageCount, 
                        Converter={StaticResource countToList}}">
    <MenuItem.ItemContainerStyle>
        <Style TargetType="MenuItem">
            <Setter Property="IsCheckable" 
                    Value="True"/>
            <Setter Property="IsChecked" 
                    Value="{Binding 
                            ElementName=MainWindow,
                            Path=CurrentImage.PageIndex, 
                            Mode=TwoWay,
                            Converter={StaticResource pageNumChecked},
                            ConverterParameter={Binding 
                                                RelativeSource={RelativeSource Self}, 
                                                Path=Content}}"/>
        </Style>
    </MenuItem.ItemContainerStyle>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)

当然问题是ConverterParameter不能绑定,因为它不是一个DependencyProperty.所以我的问题是我如何传递我需要的信息,或者有另一种方法来做到这一点.

注意:就绑定而言,我已经尝试将MenuItems放在一个ListBox非常好用的内部,但导致子菜单以非标准方式运行.也就是说,当您打开子菜单时,整个ListBox被视为一个子菜单MenuItem.

编辑

所以这就是我到目前为止所做的工作.我尝试绑定到隐藏ListBox但是当我绑定MenuItem.ItemsSource到'ListBox.Items'时,我得到了ints 的列表而不是ListBoxItem我需要获取IsSelected属性的s 列表.所以我最终使用了Quartermeister的建议,即使用MultiBinding将IsChecked属性绑定到PageIndexin OneWay模式.为了处理另一个方向,我在事件上使用了一个事件处理程序Click.值得注意的是,起初我已经IsCheckable开始true并且正在处理这个Checked …

c# wpf binding menuitem

5
推荐指数
2
解决办法
6870
查看次数