这个问题类似于LINQ group one类型的项目,但是以更通用的方式处理.
我有一个包含各种派生类的List.我可能有这样的事情:
List<BaseClass> list = new List<BaseClass>() {
new Class1(1),
new Class2(1),
new Class1(2),
new Class3(1),
new Class2(2),
new Class4(1),
new Class3(2)
};
Run Code Online (Sandbox Code Playgroud)
我试图使用LINQ对列表进行半排序,以便为某些具有base.GroupThisType == true的类保持自然顺序.具有GroupThisType的所有类应该在发生相同类型的第一个类的位置组合在一起.这是输出应该是什么样的:
List<BaseClass> list = new List<BaseClass>() {
new Class1(1),
new Class1(2),
new Class2(1),
new Class3(1),
new Class3(2)
new Class2(2),
new Class4(1),
};
Run Code Online (Sandbox Code Playgroud)
编辑: 哎呀,忘了说这个结果是假设的(Class1和Class3).GroupThisType == true
关于Mercurial的快速提问.假设我的同事和我都有最新的主干副本.我们都做出了改变,然后我们都推动/拉动彼此之间的变化.
我猜测Mercurial根据提交日期按顺序保留更改(因为没有递增修订,只有GUID).那么,如果我的计算机的日期落后一天,并且在我的同事之后花了半天,会发生什么.我的变化会在我同事的前半天出现吗?
我需要下载什么才能将我的Silverlight应用程序设置为版本4?我已经下载了wat,我认为它是Silverlight开发人员运行时的最新版本
我想在页面上突出显示搜索字词,但不要弄乱任何HTML标记.我想的是:
$('.searchResult *').each(function() {
$(this.html($(this).html().replace(new RegExp('(term)', 'gi'), '<span class="highlight">$1</span>'));
)};
Run Code Online (Sandbox Code Playgroud)
但是,$('.searchResult *').each匹配所有元素,而不仅仅是叶节点.换句话说,匹配的一些元素在其中包含HTML.所以我有几个问题:
$(this).wrap('term', $('<span />', { 'class': 'highlight' }))非常感谢!
我已经阅读了很多关于防止竞争条件的内容,但通常在upsert场景中有一条记录.例如: SQL Server 2005中的Atomic UPSERT
我有不同的要求,它是为了防止多行的竞争条件.例如,假设我有以下表结构:
GiftCards:
GiftCardId int primary key not null,
OriginalAmount money not null
GiftCardTransactions:
TransactionId int primary key not null,
GiftCardId int (foreign key to GiftCards.GiftCardId),
Amount money not null
Run Code Online (Sandbox Code Playgroud)
可能有多个进程插入GiftCardTransactions,我需要阻止插入,如果SUM(GiftCardTransactions.Amount) + insertingAmount将继续GiftCards.OriginalAmount.
我知道我可以使用TABLOCKX的GiftCardTransactions,但很明显,对于很多的交易,这将是不可行的.另一种方法是添加一个GiftCards.RemainingAmount列,然后我只需要锁定一行(虽然可能会锁定升级),但不幸的是,这对我来说不是一个选项(这是最好的选择吗?).
可能答案只是插入,然后选择SUM(GiftCardTransactions.Amount),并在必要时回滚,而不是试图阻止插入.这是一个边缘情况,所以我不担心不必要地使用PK值等.
所以问题是,如果不修改表结构并使用事务,隔离级别和提示的任何组合,我如何通过最小量的锁定来实现这一点?
我的源代码中有一个类:
public class TypeUserdef : SymbolType
Run Code Online (Sandbox Code Playgroud)
这是一个用于XML序列化的DTO,现在代码分析报告了一个警告:
MSBUILD : warning CA1704: Microsoft.Naming : Correct the spelling of 'Userdef'
in type name 'TypeUserdef'.
Run Code Online (Sandbox Code Playgroud)
我将条目放入用户词典(我的项目中的客户词典设置为buildAction ="CodeAnalysisDictionary"):
<Dictionary>
<Words>
<Recognized>
<word>userdef</word>
</Recognized>
</Words>
</Dictionary>
Run Code Online (Sandbox Code Playgroud)
现在有趣的是,这本词典在很多术语中表现得非常好.只是术语"userdef"和"vars"报告错误.(甚至可以忽略同一代码文件中的拼写错误).上述条款有什么特别之处?
添加服务引用时,它会使用默认构造函数创建"MyServiceClient"类.如果我使用新的MyServiceClient(),我会收到一个错误:无法找到默认端点...如果我使用新的MyServiceClient("endpointName"),它就可以工作.
我想在app/web.config中指定一个默认端点,当我使用默认构造函数时,它将被使用.我知道我可以将该默认名称放在*.settings中并在我的应用程序中使用它,但只是想知道是否有任何内置方法来执行它.
我确信这有一个非常简单的答案我没有找到...我在数据库中有一个简单的层次结构,其中每一行都有一个ParentId.如果ParentId IS NULL,则它是根元素.我有存储过程:
CREATE PROCEDURE GetByParent @parentId int
AS BEGIN SELECT * FROM TABLE1 WHERE ParentId = @parentId END
Run Code Online (Sandbox Code Playgroud)
如果我发送一个整数,它工作正常,但如果我发送NULL它变成ParentId = NULL,这在ANSI中不起作用.我知道有COALESCE(@parentId, ParentId),但是返回所有行时@parentId IS NULL.我可以做一个IF ELSE语句并复制查询(一个= @parentId和另一个IS NULL),但我确信有更好的方法.
我遇到的有趣问题是完全有道理的.我有一个像这样的通用方法:
public TResult Run<TResult>(Func<SqlDataReader, TResult> resultDelegate)
{
TResult result;
using (SqlDataReader reader = command.ExecuteReader()) // command is SqlCommand with attached SqlConnection
{
result = resultsDelegate(reader);
}
// Some other unrelated code (but that's why result has a variable)
return result;
}
Run Code Online (Sandbox Code Playgroud)
在一种情况下,resultDelegate返回类型(TResult)是IEnumerable<object>.问题是Run由于延迟执行,函数立即返回,处理SqlDataReader.稍后在代码中,当我尝试读取结果时(代表所做的reader.Read(),我得到了一个InvalidOperationException: Invalid attempt to call Read when reader is closed.
我很难找到解决这个问题的最佳方法.我知道我可以返回一个具体的清单,但如果可能的话我想避免这样做.我也可以在委托中移动using语句,但是再一次,如果我可以避免为每个委托做这个,那就太好了.有任何想法吗?
我无法在Microsoft堆栈和Java堆栈之间进行选择.我开始开发高负载系统.每天超过50万笔交易.最好的选择是Java堆栈还是微软?