Visual Studio 2017发布后,我想尝试使用新的C#7功能创建简单的控制台项目.我希望我只需下载新的Visual Studio 2017,然后创建新的控制台项目,并可以使用新的C#7功能.但我不能.
如果我安装NuGet包System.ValueTuple,我可以使用一些功能,如元组.
但对于其他功能,我不知道我需要做什么.例如这个NuGet问题.
我现在需要做所有这些脏安装吗?或者我可以用更简单的方式启用c#7功能?
我有一个100000对的文本文件:单词和频率.
test.in文件包含单词:
我解析这个文件并把文字放进去
Dictionary<string,double> dictionary;
Run Code Online (Sandbox Code Playgroud)
我想在以下代码中执行一些搜索+命令逻辑:
for(int i=0;i<15000;i++)
{
tempInputWord = //take data from file(or other sources)
var adviceWords = dictionary
.Where(p => p.Key.StartsWith(searchWord, StringComparison.Ordinal))
.OrderByDescending(ks => ks.Value)
.ThenBy(ks => ks.Key,StringComparer.Ordinal)
.Take(10)
.ToList();
//some output
}
Run Code Online (Sandbox Code Playgroud)
问题:此代码必须在不到10秒的时间内运行.
在我的计算机(核心i5 2400,8gb RAM)上使用Parallel.For() - 大约91秒.
更新:
万岁!我们做到了!谢谢@CodesInChaos,@ usr,@ T_D以及参与解决问题的所有人.
最终代码:
var kvList = dictionary.OrderBy(ks => ks.Key, StringComparer.Ordinal).ToList();
var strComparer = new MyStringComparer();
var intComparer = …Run Code Online (Sandbox Code Playgroud) 我有ASP.NET MVC 5解决方案,里面有大约4个项目.+ EF代码优先阅读本文后,
我尝试将应用程序EF上下文(asp.net身份)与我的模型上下文分开.(单个数据库中的两个上下文)
现在我有2个项目具有不同的上下文.
//main project
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("MyDB")
{
}
}
//another project
public class DALDbContext : DbContext
{
public DALDbContext()
: base("MyDB")
{
}
...
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样更新数据库:
update-database -ProjectName:myProject.WEB
update-database -ProjectName:myProject.DAL
(在网上我有asp.net身份)
如果我将从Azure中的VisualStudio发布此解决方案,我可以检查"执行代码优先迁移(在应用程序启动时运行)".

但如果我理解正确,它将只相当于一个命令:
update-database -ProjectName:myProject.WEB
因为它是默认项目.
我不明白如何运行这两个命令.另一方面,我试图分别执行这两个命令.我在"程序包管理器控制台"中写了类似的东西:
Update-Database -ConnectionString "Server=tcp:<server_name>.database.windows.net,1433;Database=<database_name>;User ID=<db_user_name>@<server_name>;Password=<password>;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True;Max Pool Size=100;" -ConnectionProviderName "System.Data.SqlClient"
Run Code Online (Sandbox Code Playgroud)
但我得到错误:"ConnectionString属性尚未初始化."
或者可能尝试从另一个种子方法运行...(但我认为它变化很糟糕)
最后 - 2个问题:
我是网络开发的新手.现在我用ASP.NET Identity学习ASP.NET MVC 5.在我的情况下你能给我一些建议吗:
在我的网站中,我希望有一些类型的用户.例如:买方卖方
他们每个人都可以登录并控制他的部分信息.(例如买家可以更改他的信息,添加请求.卖家也可以更改自己的信息并添加商品)
现在,我创建这样的东西:
using Microsoft.AspNet.Identity.EntityFramework;
using System.Data.Entity;
public class ApplicationUser : IdentityUser
{
public int? BuyerId { get; set; }
public int? SellerId { get; set; }
public virtual Buyer Buyer { get; set; }
public virtual Seller Seller { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
...
}
Run Code Online (Sandbox Code Playgroud)
当我们创建用户时,他会获得一些信息的角色和属性(例如,如果是买方,他将拥有角色"买方"和一些买方财产(并且卖方将为空).
这是正常的做法吗?
更新:
我想我选择了一个不好的例子(卖方和买方).在我的情况下,我有一些像recomendation系统(另一个例子):
系统可以基于关于用户的附加信息(例如,最近的经验等)和项目(例如种类,成本等)来确定用户的偏好(一些蔬菜或水果).