对于LINQ来说,我是新手......
我有一个IEnumerable通用列表,其中包含不同版本的答案(每个版本都有一个问题的FK).从这个列表中我只需要获得最新版本答案的字典.
一个非常简化的类图:
问题
-ID
-question
- ......其他属性
答
-ID
-Version
-QuestionID
-值
- ...其他属性
目前我有以下内容:
IEnumerable<Answer> answers = GetAnswers();
IDictionary<long, AnswerDTO> latestVersionAnswers = new Dictionary<long, AnswerDTO>();
if (answers != null)
{
latestVersionAnswers = answers
.OrderBy(e => e.ID)
.GroupBy(e => e.Question.ID)
.Select(g => new AnswerDTO
{
Version = g.Last().Version, // g.Select(e => e.Version).Max(),
QuestionID = g.Key,
ID = g.Last().ID,
Value = g.Last().Value
}).ToDictionary(c => c.QuestionID);
}
Run Code Online (Sandbox Code Playgroud)
虽然这在很大程度上起作用,但您可以很快发现它需要一些严肃的优化(并且有点脆弱,因为它取决于答案记录行顺序而不是"最大"逻辑).使用LINQ执行此操作的最佳方法是什么,或者最好只为每个循环执行多个操作?
任何指针或帮助将不胜感激!
特别是我正在寻找一个IP地址,我可以将其放入我的hosts文件中,这将破坏给定的DNS名称.现在我正在使用,127.0.0.1但如果我安装了任何服务,这将开始变得奇怪.
如何防止第三方程序联系给定服务器?
我有一个JQuery silder,我用它来设置Web应用程序的分数.我特意拥有它,以便用户点击提交按钮,但客户现在希望它更新AJAX风格.
这可以找到,但是滑动函数会在每个动作上调用,所以我的AJAX脚本会在滑块完成移动之前发送一个分数.
JQuery滑块上是否有一个函数在滑块释放时被调用?有没有直接的方法让我查看滑块何时被释放?
谢谢,.
我有一个长期运行的Python服务器,并希望能够在不重新启动服务器的情况下升级服务.这样做的最佳方法是什么?
if foo.py has changed:
unimport foo <-- How do I do this?
import foo
myfoo = foo.Foo()
Run Code Online (Sandbox Code Playgroud) 有人知道Windows工具向进程报告假日期/时间吗?
显然,有一些Linux程序可用于测试软件将来/在不同时区的反应方式,或触发计划任务而无需实际修改系统时钟.有这样的Windows程序吗?
我最近调试了一些有点内存泄漏的代码.这是一个长期运行的程序,作为Windows服务运行.
如果你发现一个戴着IDisposable界面的类,它告诉你它使用的一些资源超出了垃圾收集器为你清理的能力.
它告诉你的原因是你,这个对象的用户现在负责清理这些资源的时间.恭喜!
作为一名尽职尽责的开发人员,.Dispose()当您完成对象以释放这些非托管资源时,您会轻松调用该方法.
完成后,有一个很好的using()模式可以帮助清理这些资源.只是发现哪些确切的物体导致泄漏?
为了帮助追踪这些流氓非托管资源,有什么方法可以查询在任何给定时间点等待处置的对象是什么?
Java教程说:"同一个对象上的两个同步方法的调用不可能交错."
这对静态方法意味着什么?由于静态方法没有关联对象,所以synchronized关键字会锁定类,而不是对象吗?
比我更愿意承认我有一个新项目的人做结帐只是发现他们缺少各种资源,dll,设置.我想养成一个正确的习惯,让我的项目编辑顺利,可以从一个新的结账.
有关如何构建项目的一些提示或建议,以便在从版本控制中重新检查时没有编译问题?
我已经开始在我的项目中保留一个"Resources"文件夹,其中包含源代码管理中所有需要的dll引用.其他人可以提出一些建议吗?
我希望能够访问鼠标的坐标,无论光标是否在我的应用程序的窗口上.
当我使用Mouse.Capture(IInputElement)或UIElement.CaptureMouse()时,两者都无法捕获鼠标并返回false.
可能是我的问题?
我窗口的cs文件如下:
using System.Windows;
using System.Windows.Input;
namespace ScreenLooker
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
bool bSuccess = Mouse.Capture(this);
bSuccess = this.CaptureMouse();
}
protected override void OnMouseMove(MouseEventArgs e)
{
tbCoordX.Text = e.GetPosition(this).X.ToString();
tbCoordY.Text = e.GetPosition(this).Y.ToString();
//System.Drawing.Point oPoint = System.Windows.Forms.Cursor.Position;
//tbCoordX.Text = oPoint.X.ToString();
//tbCoordY.Text = oPoint.Y.ToString();
base.OnMouseMove(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)