我正在尝试解决C#中最大的主要编程实践问题.问题很简单,打印出或写入文件号:2 58,885,161 - 1(其中有17,425,170位)
我已经设法使用神奇的GNU多精度算术库通过Emil Stevanof .Net包装器来解决它
var num = BigInt.Power(2, 57885161) - 1;
File.WriteAllText("biggestPrime.txt", num.ToString());
Run Code Online (Sandbox Code Playgroud)
即使所有当前发布的解决方案都使用此库,对我来说也感觉像是作弊.有没有办法在托管代码中解决这个问题?想法?建议?
PS:我已经尝试过使用.Net 4.0 BigInteger,但它永远不会结束计算(我等了5分钟,但与GMP解决方案的50秒相比已经很多了).
在visual studio启动期间,我收到很多关于扩展包加载错误的讨厌对话框.所有未能加载的扩展都是我卸载的扩展.
我检查了本文中提到的所有地方(在VS2010中引导VS包和VSIX扩展)并且没有任何扩展我得到错误.
还有其他地方我可以检查吗?
我会"只是"想看看visual studio在哪里找到这些引用并且将它们全部删除:)

我在Windows注册表中找到了这个文件夹:
HKEY_USERS\S-1-5-21-3990449039-760197492-1239349315-1121\Software\Microsoft\VisualStudio\10.0_Config\Packages
Run Code Online (Sandbox Code Playgroud)
它包含对visual studio尝试加载的扩展的所有引用(主要指向HKEY_USERS\S-1-5-21-3990449039-760197492-1239349315-1121\Software\Microsoft\VisualStudio\10.0_Config\InstalledProducts子文件夹).
我刚刚重命名了我删除的扩展名的文件夹,我不再看到加载错误了.
我确定这可能会导致一些副作用,所以有人知道更好的方法来避免Visual Studio试图加载卸载的扩展吗?
我在一个SqlCommand中批处理不同的查询,当我达到2100参数限制时停止查询批处理.如果我的批次有2100或2099个参数,我仍然会得到例外.
即使参数数量小于2100,以下测试代码也会抛出"参数异常太多".
var parametersMax = 2099;
var connection = new SqlConnection(@"Data Source=.;Integrated Security=SSPI;");
connection.Open();
var enumerable = Enumerable.Range(0, parametersMax);
var query = string.Format("SELECT {0}", String.Join(", ", enumerable.Select(s => string.Format("P{0} = @p{0}",s))));
var command = new SqlCommand(query, connection);
foreach(var i in enumerable)
command.Parameters.Add(string.Format("p{0}",i), i);
// here: command.Parameters.Count is 2099
var reader = command.ExecuteReader(); // throws: The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Too many parameters were provided in this RPC request. The maximum is …Run Code Online (Sandbox Code Playgroud) 我正在寻找DataContext.GetTable<TEntity>实体框架中的等价物.我找到了这个ObjectContext.CreateQuery<T>方法,但它有所不同,DataContext.GetTable<TEntity>因为它需要一个查询字符串才能工作.
有没有办法在不指定查询字符串的情况下使用实体类型为表获取IQueryable对象?
*EDIT: Added code snippet*
这是我实现的与linq2sql一起使用的Repository类的片段.我不能使用, ObjectContext.[TableName]因为它不再是通用的.
public class BaseRepository<TClass> : IDisposable
where TClass : class
{
protected BaseRepository(DataContext database)
{
_database = database;
}
...
public IQueryable<TClass> GetAllEntities()
{
IQueryable<TClass> entities = _database.GetTable<TClass>();
return entities;
}
public IQueryable<TClass> GetEntities(Expression<Func<TClass, bool>> condition)
{
IQueryable<TClass> table = _database.GetTable<TClass>();
return table.Where(condition);
}
Run Code Online (Sandbox Code Playgroud)
*EDIT: Added my solution (so far..)*
这就是我正在使用的:
public IQueryable<TClass> GetEntities(Expression<Func<TClass, bool>> condition)
{
IQueryable<TClass> table = _database.CreateQuery<TClass>(typeof(TClass).Name);
return table.Where(condition);
}
Run Code Online (Sandbox Code Playgroud)
只要类名与表名相同,这就可以工作.当我开始为同一个表使用不同的对象时,这将成为我的问题.
我希望我已经清楚了,先谢谢, …
阅读有关SQL Server 2014中的聚簇列存储索引的信息,我想知道是否有一个包含大量列的表仍然是一种反模式.目前为了缓解具有大量列的单个表的问题,我使用垂直分区但是具有可用的聚簇列存储索引,这不应该是必需的.这是正确的还是我错过了什么?
示例: 让我们以性能计数器的日志为例,原始数据可能具有以下结构:
????????????????????????????????????????????????????????????????? ? Time ? Perf1 ? Perf2 ? ... ? ... ? ... ? Perf1000 ? ????????????????????????????????????????????????????????????????? ? 2013-11-05 00:01 ? 1 ? 5 ? ? ? ? 9 ? ? 2013-11-05 00:01 ? 2 ? 9 ? ? ? ? 9 ? ? 2013-11-05 00:01 ? 3 ? 2 ? ? ? ? 9 ? ? 2013-11-05 00:01 ? 4 ? 3 ? ? ? ? 9 ? ?????????????????????????????????????????????????????????????????
拥有1000列这样的表是邪恶的,因为一行很可能跨越多个页面,因为通常不太可能对所有度量感兴趣,但查询总是会产生IO成本等等.等等..解决这种垂直分区通常会有所帮助,例如,可以按类别(CPU,RAM等)对不同表中的性能计数器进行分区.
相反具有这样的表作为一个聚集列存储索引不应该出现这样的问题,因为数据将被存储列明智的,涉及对每个查询的IO将大约只 …