2013-05-30 57 views
1

方法我有此查詢:如何模擬.Substring()在LINQ到實體

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; 

和我foud指出,L2E不支持.Substring()方法。那麼,我怎麼能得到我想要的?!

+0

ü沒有得到任何錯誤? –

+0

是啊!一個例外... – AminSaghi

+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; 

感謝大家的幫助...

+0

是你的beginDate字符串嗎? – maxlego

+0

是的,它的字符串 – AminSaghi

+0

爲什麼不是DateTime? – maxlego

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()。

+0

'BeginDate'本身就是一個字符串。 nedd要做那個? – AminSaghi

+0

你在哪裏發現L2E不支持子字符串? –

+0

異常文本!和其他帖子 – AminSaghi

0

與「包含」危險的是,它搜索整個字符串。根據日期格式的不同,這可能會產生問題。例如:如果您的日期格式爲「yyyyMMdd」,那麼您不太可能會遇到問題(除非您計劃在1232年之前插入日期)。如果是「yyyyMMddHHmmss」,期望隨機並且很難找到錯誤。

+0

I不要以爲它會對我造成問題,因爲我所有的日期格式都是yyyy-mm-dd。 – AminSaghi