наконец, возраст члена не работает - PullRequest
2 голосов
/ 15 сентября 2011

Я пытаюсь проверить людей в определенном диапазоне - пусть minage и maxage соответствуют, например, возрастной группе с minage = 18 и maxage = 24, что означает, что я пытаюсь отфильтровать людей в возрасте от 18 до 24. Также тип данных дляdob of member is string ..

я пытаюсь это

 int agefrom = Convert.ToInt32(cbGEFrom.Text);
 int ageto = Convert.ToInt32(cbGETo.Text);
 DateTime today = DateTime.Today;
 DateTime max = today.AddYears(-(agefrom + 1));
 DateTime min = today.AddYears(-(ageto));
 string maxage = Convert.ToString(max);
 string minage = Convert.ToString(min);


var members = 
          from report in eclipse.members 
          where string.Compare(report.member_Dob,minage) >=0
          where string.Compare(report.member_Dob,maxage) < 0
        select report;

я пробовал это ниже

 var members = from report in eclipse.members
      let dob =  DateTime.Parse(report.member_Dob) // or use ParseExact 
      where  dob >= minDOB && dob < maxDOB 
      select report;

, но linq для сущностей не поддерживает эту строку

let dob =  DateTime.Parse(report.member_Dob) // or use ParseExact 

к сожалению, тип данных для member_dob является строкой, я не могу изменить схему ...

кто-нибудь из PLS даст какую-либо идею сделать это ...

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

Если вы не возражаете против sql, сгенерированного этим выражением, и все ваши строковые значения являются действительными DateTime, вы можете сделать это:

var members = from report in eclipse.members
              let dob = eclipse.members.Take(1).Select(x => report.member_Dob).Cast<DateTime>().FirstOrDefault()
              where  dob >= minDOB && dob < maxDOB 
              select report;
0 голосов
/ 15 сентября 2011

Посмотрите на этот пост Linq to Entities DateTime Conversion

Я думаю, что он имеет ответ, который вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...