我在 LINQ 中遇到以下情况:我有一个对象(博客“帖子”),它有一个可以采用不同值的“状态”字段,并且有一个列出所有这些值的表(这个表只有 Id、Desc) .
现在,由于创建了两个表之间的关系,因此在模型中,Post.Status 不是一个 int,而是“PostStatus”的一个实例。
因此,如果我想将 Post 的状态设置为 20,我不能只将字段设置为 20,我需要有一个 PostStatus 的实例来分配。这些状态值都是用逻辑硬编码的,所以在我的代码中硬编码“20”就可以了。
有没有更好的方法来做到这一点?
switch (Action) {
case "Ignore":
post.PostStatus = (from s in db.PostStatus where s.Id == 90 select s).First();
break;
case "Assign":
post.PostStatus = (from s in db.PostStatus where s.Id == 20 select s).First();
break;
case "MarkDone":
post.PostStatus = (from s in db.PostStatus where s.Id == 30 select s).First();
break;
case "MarkPublished":
post.PostStatus = (from s in db.PostStatus where s.Id == 40 select s).First();
post.Public = true;
break;
}
老实说,我讨厌这段代码,首先是因为它不必要地查询数据库以获取 PostStatus 实例,但主要是因为它太冗长了。
有一个更好的方法吗?
谢谢!
丹尼尔