嗨,我有一个类类型class1的元素列表,如下所示.我如何将它们组合成一个
Dictionary<int,List<SampleClass>>
基于groupID
class SampleClass
{
public int groupID;
public string someData;
}
Run Code Online (Sandbox Code Playgroud)
我这样做了:
var t =(from data in datas group data by data.groupID into dataGroups select dataGroups).ToDictionary(gdc => gdc.ToList()[0].groupID, gdc => gdc.ToList());
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点
我找到了一段代码,从Java 7切换到Java 8后停止编译.它没有任何新的Java 8内容,如lambda或流.
我将有问题的代码缩小到以下情况:
GenericData<Double> g = new GenericData<>(1d);
Double d = g == null ? 0 : g.getData(); // type error!!!
Run Code Online (Sandbox Code Playgroud)
您可能猜测GenericData
构造函数有一个泛型类型的参数,该getData()
方法只返回该泛型类型.(有关完整的源代码,请参阅下文.)
现在困扰我的是,在Java 7中,代码编译得很好,而使用Java 8,我得到以下错误:
CompileMe.java:20: error: incompatible types: bad type in conditional expression
Double d = g == null ? 0 : g.getData();
^
int cannot be converted to Double
Run Code Online (Sandbox Code Playgroud)
似乎Java 7能够从int - > double - > Double进行转换,但Java 8因尝试立即从int - > Double而失败.
我觉得特别有趣的是Java 8 确实接受代码时,我改变它getData()
到data
,即访问GenericData
通过变量本身而不是消气方法的价值:
Double …
Run Code Online (Sandbox Code Playgroud) 我有事务隔离级别的问题.这里涉及两个表,第一个被设置为事务隔离级别经常更新SERIALIZABLE时,第二一个有外键的第一个.
插入或更新第二个表时出现问题.几个小时后,我收到错误消息:
由于更新冲突,快照隔离事务中止.您不能使用快照隔离直接或间接访问数据库'DB'中的表'dbo.first'来更新,删除或插入已被另一个事务修改或删除的行.重试事务或更改update/delete语句的隔离级别.
插入或更新第二个表时我没有设置事务隔离级别,我也运行命令DBCC USEROPTIONS并返回read_committed
我需要尽快消除这个错误,谢谢你
我们有哪些行获得插入只有表底部的大MyISAM表.
在做一些基准测试时,我意识到选择不会(总是)将其他插入锁定到同一个表中.但是,当插入来自存储过程/函数时,它们将被select锁定.
这是为什么?
要演示此行为:
CREATE TABLE Foo (
ID INT NOT NULL AUTO_INCREMENT,
Bar VARCHAR(200),
PRIMARY KEY(ID)) ENGINE=MyISAM;
--INSERT into Foo 10M rows
DELIMITER $$
DROP PROCEDURE IF EXISTS InsertProc$$
CREATE PROCEDURE InsertProc(IN vBar VARCHAR(255))
BEGIN
INSERT Foo(Bar) VALUES (vBar);
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
运行以下查询:
SELECT Count(*) FROM Foo WHERE INSTR(Bar, 'abcdefg') > 0;
Run Code Online (Sandbox Code Playgroud)
当Select正在运行时,打开一个新连接并运行以下插入查询:
INSERT Foo(Bar) VALUES ('xyz1234');
Run Code Online (Sandbox Code Playgroud)
该Insert将立即运行并返回,但是,如果我运行以下查询:
CALL InsertProc('xyz1234');
Run Code Online (Sandbox Code Playgroud)
现在查询将锁定并等待select完成.
在Window Server 2K3上运行的MySql版本:5.0.51
谢谢.
- 更新这是配置文件输出:
直接插入:
(initialization) 0.0000432
checking permissions 0.0000074
Opening tables 0.0000077
System lock 0.0000032 …
Run Code Online (Sandbox Code Playgroud) 我有一个非通用的基类,带有泛型方法我希望通过添加一些额外的代码来扩展这个方法,而方法的其余部分应该通过调用base.Method保持不变
这是一个例子
public override List<T> MyMethod<T>()
{
// do some work in here
...
//
return base.MyMethod<T>(); // **I get an error here saying that T must be a reference type**
}
Run Code Online (Sandbox Code Playgroud)