所以我只是遇到了这个非常奇怪的场景,并想知道是否有人可能知道问题是什么.我有以下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__0值dashboardId.我得到了这些结果.
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) 我有一个字符串,我需要增加1字符串有字符和数字值.
我的字符串布局如下"MD00494"
我如何将其增加到"MD00496"和"MD00497"等
如果它是带有数字的普通字符串,我会将其解析为int.
我尝试了以下内容
int i = int.Parse(sdesptchNo);
i++;
txtDispatchNo.Text = i.ToString();
Run Code Online (Sandbox Code Playgroud)
任何想法如何我会这样做.
我的班级有这一行:
private static readonly ILog log = LogManager.GetLogger(typeof(Prim));
Run Code Online (Sandbox Code Playgroud)
当我进行单元测试时,我无法将moq记录器注入此接口,因此我可以计算日志调用.
有没有办法做到这一点?Log4net建议记录器使用静态只读模式.处理它的最佳方法是什么?
将带参数的方法传递给接受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) 我PageMediaSize将a 的集合绑定PrintQueue到ItemSourcea ComboBox(这很好).然后我绑定SelectedItem的ComboBox到DefaultPrintTicket.PageMediaSize的PrintQueue.虽然这会将所选值设置为DefaultPrintTicket.PageMediaSize恰好,但它不会将最初选择的值设置为ComboBox初始值.DefaultPrintTicket.PageMediaSize 这是因为DefaultPrintTicket.PageMediaSize引用与集合中的任何引用都不匹配.但是我不希望它通过引用来比较对象,而是通过值来比较,但PageMediaSize不会覆盖Equals(我无法控制它).我真正想做的是设置一个IComparable供ComboBox使用,但我没有看到任何方法这样做.我试过用一个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) 我有一个WPF应用程序,我已经定义了使用键手势Ctrl+ ←和Ctrl+的自定义命令→.我的窗口有a TextBox和a ScrollViewer,当TextBox有焦点时Ctrl+ ←和Ctrl+ →将光标移动到下一个或上一个单词的开头,这很好.
但是在ScrollViewer它上面使水平滚动移动就像我按下了←或者→.允许Ctrl+ ←和Ctrl+ →事件从我ScrollViewer到Command定义的窗口冒泡的最简单方法是什么?
当我输入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版中修复.
我有这样的产品表: -
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#与MVVM Light 5.我花了整整一周的时间学习如何使用内存分析器,阅读常见的内存泄漏问题等等.我已经把这个问题放了25个小时以上.我仔细清除所有事件处理程序,甚至在BackNavigation之后以及检测到循环导航时将每个页面的DataContext和LayoutRoot置空(我在App.cs中存储最后一个运行的页面实例,当该页面的另一个实例时即将创建,我检查是否已经有一个实例,如果有,我清除它).
我已经筋疲力尽,我不知道从哪里开始.
下面是重复导航2页之后的内存分析屏幕截图的链接.由于某种原因,每个页面的实例都没有被释放,但它们被简化为单纯的字节.

如您所见,我保留的分配与从开始和结束保留的视觉效果之间的差异非常小(总共约30mb).
然而在图中,我看到差不多100mb.
这让我非常疯狂,我认为底层平台在管理这个方面会做得更好.任何帮助是极大的赞赏.
我正在尝试设置一个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# ×10
wpf ×3
binding ×2
linq ×2
.net ×1
action ×1
combobox ×1
log4net ×1
logging ×1
memory ×1
memory-leaks ×1
menuitem ×1
moq ×1
performance ×1
resharper ×1
sql-server ×1
unit-testing ×1