【问题标题】:How to match a specific string inside a string fetched from database in MVC 5?如何匹配从 MVC 5 中的数据库中获取的字符串中的特定字符串?
【发布时间】:2020-06-05 15:55:30
【问题描述】:

所以我正在构建一个项目,我需要根据给定的月份从数据库中获取日期, 因为我需要找到在给定月份过生日的客户。我有一个在 SQL 服务器中运行良好的查询,但在 Linq 中没有得到它的等价物。

这是我在 SQL 中运行的查询

SELECT * FROM CustReg 
WHERE DOB LIKE '_____month%'

我需要匹配那个月份,因为它应该在 DOB 字符串的第 6 位。

Demo Database-
Id    Name    DOB
1     AB      1995-02-20
2     CD      1998-04-13
4     EF      1991-02-15
5     GH      1988-06-8
6     IJ      2000-02-09

查询 - 选择所有 2 月生日的员工。 预期输出 - AB、EF、IJ。

PS- 我采用了 DOB string 而不是 DateDateTime 的数据类型。 我还有从输入日期获取的月份字符串(例如 2 月的“02”)。

【问题讨论】:

  • 您能分享您的输入和预期输出吗?
  • @AnkitTiwari:你为什么不在 sql 查询中使用MONTH(your_date) 来匹配你的月份?对于LINQ,我认为您的问题与stackoverflow.com/questions/39609777/… 相同
  • @Irfan 因为我已将字符串作为该字段的数据类型,而不是日期或日期时间。
  • @xXx 我已经编辑了我的问题,请再次检查
  • 修复您的数据库并将 DOB 存储为正确的日期类型。

标签: sql-server linq asp.net-mvc-5


【解决方案1】:

如果我正确理解了您的问题,以下代码可能会有所帮助。

首先创建一个月份的枚举,

public enum Month
{
   Jan=1,Feb,Mar,Apr,May,Jun,July,Aug,Sep,Oct,Nov,Dec
}

现在使用下面的查询来得到你想要的,

Month requiredMonth = Month.Feb;
var res = CustReg.Where(x => (Month)Enum.Parse(typeof(Month), x.DOB.Substring(5, 2)) == requiredMonth).Select(x => x.Name);
foreach (var item in res)
{
   Console.WriteLine(item);
}

【讨论】:

    猜你喜欢
    • 2011-10-02
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多