如何按生日搜索人?

发布于 2024-12-06 02:59:32 字数 887 浏览 2 评论 0原文

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

       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";
            }

I've found this way, is there any other simplier?

       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";
            }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心在旅行 2024-12-13 02:59:32

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 对其进行迭代。

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

LINQ could get you started.

from DataRow dr in dt.Rows
where ((Date)dr["birthday"]).Month = Date.Today.Month && ((Date)dr["birthday"]).Day = Date.Today.Day
select dr;

That yields an IEnumerable<DataRow>, which you could iterate over with a foreach.

EDIT: Incorporated bemused's comment regarding previous years.

倾`听者〃 2024-12-13 02:59:32

您可以将其简化

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

String aniversario = DateTime.UtcNow.ToString("dd'-'MM");
// You *are* storing dates in UTC aren't you?

:这不会改变这样一个事实:这不是存储或搜索日期的好方法,但它是一个很好的起点。

除了 Jim Dagg 的 LINQ 示例之外,这就是我得到的全部内容。

You could simplify this:

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

Into this:

String aniversario = DateTime.UtcNow.ToString("dd'-'MM");
// You *are* storing dates in UTC aren't you?

This doesn't change the fact that this isn't a good way to store or search for dates, but its a good place to start.

That's all I got, besides Jim Dagg's LINQ example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文