C# 如何按生日搜索人?

C# 如何按生日搜索人?,c#,search,datatable,C#,Search,Datatable,我找到了这个方法,还有其他更简单的吗 ClienteAdapter cliente = Cache.CacheManager.Get<ClienteAdapter>(); DataTable dt = cliente.GetDataTable(); DateTime dta = DateTime.Today; String dia = dta.Day.ToString(); if (dta.Day < 1

我找到了这个方法,还有其他更简单的吗

       ClienteAdapter cliente = Cache.CacheManager.Get<ClienteAdapter>();
       DataTable dt = cliente.GetDataTable();
       DateTime dta = DateTime.Today;
        String dia = dta.Day.ToString();
        if (dta.Day < 10)
            dia = '0'+dia;
        String mes = dta.Month.ToString();
        if (dta.Month < 10)
            mes = '0'+mes;
        String aniversario = String.Format("{0}-{1}", dia, mes);
        dt = cliente.Get(dt, String.Format("WHERE dtNascCli LIKE '%{0}%'", aniversario));
        if (dt.Rows.Count>0) {
            String aniversariantes = "Aniversariantes do dia:\n";
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                aniversariantes += ((dt.Rows[i]["nmComprador"] != null) : dt.Rows[i]["nmComprador"] ? dt.Rows[i]["nmRazao"]) + "\n";
            }
clientadapter cliente=Cache.CacheManager.Get();
DataTable dt=cliente.GetDataTable();
DateTime dta=DateTime.Today;
字符串直径=dta.Day.ToString();
如果(dta.日<10)
直径='0'+直径;
字符串mes=dta.Month.ToString();
如果(dta月<10)
mes='0'+mes;
String aniversario=String.Format(“{0}-{1}”,直径,mes);
dt=cliente.Get(dt,String.Format(“其中dtNascCli类似于“{0}%”,aniversario));
如果(dt.行数>0){
字符串aniversariantes=“aniversariantes do dia:\n”;
对于(int i=0;i
LINQ可以帮你开始

from DataRow dr in dt.Rows
where ((Date)dr["birthday"]).Month = Date.Today.Month && ((Date)dr["birthday"]).Day = Date.Today.Day
select dr;
这将生成一个
IEnumerable
,您可以使用
foreach
对其进行迭代


编辑:合并了困惑的关于前几年的评论。

您可以简化这一点:

DateTime dta = DateTime.Today;
String dia = dta.Day.ToString();
if (dta.Day < 10)
    dia = '0'+dia;
String mes = dta.Month.ToString();
if (dta.Month < 10)
    mes = '0'+mes;
String aniversario = String.Format("{0}-{1}", dia, mes);
这并没有改变这样一个事实,即这不是一个存储或搜索日期的好方法,但这是一个很好的开始


除了Jim Dagg的LINQ例子,我只知道这一点。

有两件事:不幸的是,我不会说意大利语(?),也没有相当比例的SO用户。如果你能将你的列名翻译成英语,那可能会有帮助。另外,当你说“按生日搜索”时,你的意思是“在一张桌子上找到所有在某一天过生日的人”?是的,找到所有今天过生日的人!相同的想法,但使用:DateTime.Now。DayOfYear@aquinas--我认为在闰年的情况下,一年中的某一天可能会引起麻烦非闰年的60天,闰年的61天!我写这篇文章的时候,我甚至想到了闰年。我不知道我在想什么:)你为什么要用UTC存储生日?当有人告诉你他们的生日是1月10日,你会问他们那是不是UTC时间1月10日吗?:)因为在同一时间,世界不同地区的日子可能不同同时,出生日期(大概,我只是猜测)也有一年。
String aniversario = DateTime.UtcNow.ToString("dd'-'MM");
// You *are* storing dates in UTC aren't you?