我需要我的枚举返回一个特定的字符串,但我无法弄清楚如何让它返回一个包含中断的字符串而无需进行转换的方法.没有辅助方法可以LicenseTypes.DISCOUNT_EARLY_ADOPTER返回DISCOUNT EARLY-ADOPTER吗?
// All license types
public enum LicenseTypes
{
DISCOUNT,
DISCOUNT_EARLY_ADOPTER,
COMMERCIAL,
COMMERCIAL_EARLY_ADOPTER
}
// Convert enum to correct string
public static string LicenseTypeToString(LicenseTypes Enum)
{
if (Enum == LicenseTypes.COMMERCIAL)
return "COMMERCIAL";
else if (Enum == LicenseTypes.COMMERCIAL_EARLY_ADOPTER)
return "COMMERCIAL EARLY-ADOPTER";
else if (Enum == LicenseTypes.DISCOUNT)
return "DISCOUNT";
else if (Enum == LicenseTypes.DISCOUNT_EARLY_ADOPTER)
return "DISCOUNT EARLY-ADOPTER";
else
return "ERROR";
}
Run Code Online (Sandbox Code Playgroud) 这是工人阶级:
namespace Lite
{
public class Spec
{
public int ID { get; set; }
public string Name { get; set; }
public string FriendlyName { get; set; }
public int CategoryID { get; set; }
public int Width { get; set; }
public int Height { get; set; }
public string UOM { get; set; }
public int Pagination { get; set; }
public int ColoursFront { get; set; }
public int ColoursBack { get; set; }
public string …Run Code Online (Sandbox Code Playgroud) 我有查询:
var q = db.tblArcadeGamePlays
.Where(c => c.GameID == GameID && c.ReferalID != 0 && c.ReferalID != null)
.GroupBy(r => new { r.ReferalID })
.Select(g => new { Plays = g.Count(), URL = g.Key.ReferalID })
;
Run Code Online (Sandbox Code Playgroud)
tblArcadeGamePlays还有一个字段Date,在该组中我想返回该组包含的最早观察日期.
我该怎么做?
我已经下载了迷你探查器:http: //code.google.com/p/mvc-mini-profiler/
我正在使用带有webforms的ASP.net 4.0(VS 2010).我真的很困惑如何安装它.我已经打开了下载中包含的各种项目,大多数都没有打开没有错误.
我有点期待一个DLL只是包括,但这显然是错误的!我搜索了安装说明但找不到任何安装说明.
谁能帮帮我吗?
如果你看一下我们的街机主页:
在右上方有一个方框,显示最后一个玩这个游戏的人.在我正在使用的分析器中,它显示为运行900毫秒,这占总页面加载时间的大约80%.
查询相对简单:
// Recent players
using (MainContext db = new MainContext())
{
var q = (from c in db.tblArcadeGamePlays
join a in db.tblProfiles on c.UserID equals a.UserID
where c.UserID != 0
select new
{
c.UserID,
c.tblForumAuthor.Username,
a.EmailAddress,
Date = (from d in db.tblArcadeGamePlays where d.UserID == c.UserID orderby d.Date descending select new { d.Date }).Take(1).Single().Date
})
.Distinct()
.OrderByDescending(c => c.Date)
.Take(16);
Run Code Online (Sandbox Code Playgroud)
但这对我的需求来说太慢了.
这上面的输出缓存不合适,因为这个盒子实时很好.此外,即使对于一个用户来说,正常页面加载的900毫秒也太慢,所以如果可能的话,希望避免这种情况.
有没有人对如何加快这一点有任何想法?我目前的两个想法是:
两种丑陋!任何帮助赞赏.
根据要求,linqpad的结果
LAMBDA
TblArcadeGamePlays
.Join (
TblProfiles,
c => c.UserID,
a …Run Code Online (Sandbox Code Playgroud) 鉴于代码:
/// <summary>
/// Get a games high scores
/// </summary>
public static List<Score> GetGameHighScores(int gameID, HighScoreType type, int? skip = null, int? take = null)
{
var r = new List<Score>();
using (var db = new ArcadeContext())
{
var q = new List<ArcadeScore>();
if (skip != null && take != null)
{
switch (type)
{
case HighScoreType.ScoreRank:
q =
db.ArcadeScores.Where(c => c.GameID == gameID && c.ScoreRank > 0)
.OrderBy(c => c.ScoreRank)
.Skip(skip.Value)
.Take(take.Value)
.ToList();
break;
case HighScoreType.UserRank:
q = …Run Code Online (Sandbox Code Playgroud) 我HashHash在表格中插入了一个新列.然后我需要编写一个小函数来设置HashHashto 的值Sha1(Row.Hash):
public static void UpdateAllHashHashes()
{
using (var db = new MainContext())
{
var q = db.v2Hashes;
foreach (var rec in q)
{
rec.HashHash = GetSha1(rec.Hash);
db.SubmitChanges();
}
}
}
Run Code Online (Sandbox Code Playgroud)
该表有数千条记录.我第一次跑它,花了好几分钟.它在结尾附近引发了一个错误,导致它没有完成,并留下了大约20条未经处理的记录,这是我期待的,所以我再次运行该函数以获得最后工作正常的记录.
第二次传递的原因是如此之快,因为db.SubmitChanges实际上没有执行SQL因为值没有改变?我仍然希望它运行UPDATESQL查询.
或者,这是一个数据库引擎优化吗?
我有一个简单的表:
IPAddress (PK, string)
Requests (int)
Run Code Online (Sandbox Code Playgroud)
这是一个洪水限制器.每分钟删除表数据.每个页面请求,Requests给定的计数增量IPAddress.
由于我们的产品和网站的性质,我们确实遭受了一些偶然/有意的有效DDOS,因此它运行良好,我们的网站性能显着提高.
唯一的问题是,当IP因某种原因每分钟向我们的网站发送数千个请求时,我们会突然出现这些错误:
违反PRIMARY KEY约束'PK_v2SiteIPRequests'.无法在对象'dbo.v2SiteIPRequests'中插入重复键.重复键值为([IP_ADDRESS]).该语句已终止.
制作插入的代码是:
/// <summary>
/// Call everytime a page view is requested
/// </summary>
private static void DoRequest(string ipAddress)
{
using (var db = new MainContext())
{
var rec = db.v2SiteIPRequests.SingleOrDefault(c => c.IPAddress == ipAddress);
if (rec == null)
{
var n = new v2SiteIPRequest {IPAddress = ipAddress, Requests = 1};
db.v2SiteIPRequests.InsertOnSubmit(n);
db.SubmitChanges();
}
else
{
rec.Requests++;
db.SubmitChanges();
// Ban?
if (rec.Requests >= Settings.MAX_REQUESTS_IN_INTERVAL)
{
BanIP(ipAddress); …Run Code Online (Sandbox Code Playgroud) 给定表结构:
Comment
-------------
ID (PK)
ParentCommentID (FK)
Run Code Online (Sandbox Code Playgroud)
我想运行DELETE FROM Comments删除所有记录.
但是,如果在子注释之前删除父注释,则与父注释记录的关系会产生FK冲突.
要解决此问题,以反向ID顺序删除将起作用.如何以反向ID顺序删除表中的所有记录?
鉴于接口:
interface IVotable
{
int TotalUpvotes { get; }
int TotalDownvotes { get; }
int TotalVoteScore { get; }
}
Run Code Online (Sandbox Code Playgroud)
通过一个实现:
public class Comment : IVotable
{
public int TotalUpvotes { get; private set; }
public int TotalDownvotes { get; private set; }
public int TotalVoteScore { get { return TotalUpvotes - TotalDownvotes + 1 ; } }
}
Run Code Online (Sandbox Code Playgroud)
避免TotalVoteScore在每个类中实现相同方式的最佳方法是什么?
c# ×9
asp.net ×5
linq ×5
performance ×2
sql-server ×2
asp.net-4.0 ×1
class ×1
conflict ×1
dry ×1
enums ×1
getter ×1
interface ×1
linq-to-sql ×1
optimization ×1
primary-key ×1
profiling ×1
refactoring ×1
repeat ×1
sql ×1
sql-delete ×1