如何在Linq-to-Entities中模拟.Substring()方法

时间:2013-05-30 10:09:13

标签: linq linq-to-entities

我有这个问题:

Course c = db.Courses.Find(id);
var pics = from pic in db.PersonnelInCourses
    where pic.PersonnelID == User.Identity.Name &&
        pic.Course.TitleID == c.TitleID &&
        pic.Course.BeginDate.Substring(0, 4) == PersianDateTime.Now.Year.ToString()
    select pic;

我发现L2E不支持.Substring()方法。那么,我怎样才能得到我想要的东西?!

3 个答案:

答案 0 :(得分:2)

发现它!

string year = PersianDateTime.Now.Year.ToString();           
Course c = db.Courses.Find(id);
var pics = from pic in db.PersonnelInCourses
   where pic.PersonnelID == User.Identity.Name &&
       pic.Course.TitleID == c.TitleID && 
       pic.Course.BeginDate.Contains(year)                         
   select pic;

谢谢大家的帮助......

答案 1 :(得分:1)

试试吧

Course c = db.Courses.Find(id);
var pics = from pic in db.PersonnelInCourses
    where pic.PersonnelID == User.Identity.Name &&
        pic.Course.TitleID == c.TitleID &&
        pic.Course.BeginDate.Substring(0, 4).Equals(PersianDateTime.Now.Year.ToString()) 
    select pic;

我不知道BeginDate的类型是什么?我是DateTime,然后调用ToString()。

答案 2 :(得分:0)

'Contains'的危险在于它搜索整个字符串。根据日期的格式,这可能会产生问题。例如:如果您的日期格式为“yyyyMMdd”,则您不太可能遇到问题(除非您计划在1232年之前插入日期)。如果它是“yyyyMMddHHmmss”,则期望随机且难以发现错误。