首页 > 解决方案 > IQuerable 与 Linq 查找日期时间中的字符串部分

问题描述

我想要做的是允许用户搜索结果集中显示的部分日期。

结果表

ID  | Name | Date  
1     Bob    31 August 2018  
2     Bill   29 June 2000  
31    Foo    1 June 2005  

有一个搜索框,如果用户搜索说“31”,我需要使用 Linq 和实体框架 6 构建一个 IQuerable<>

var searchValue = "31"

var data = IQuerable<T>

data.Where(x => x.Date.ToString("D").Contains(searchValue)
                || x.Id.Contains(searchValue)
                || x.Name.Contains(searchValue)).Take(x).Skip(Y)

结果应该是

ID  | Name | Date  
1     Bob    31 August 2018  
31    Foo    1 June 2005

但结果始终为空。

我正在搜索的表有大约 500,000 条记录。它适用于除日期之外的所有内容。

标签: c#sqllinq

解决方案


检查这个经过测试的示例,用您的对象值替换日期对象,并在包含您需要检查的值中传递一个值。

   class Program
    {
        static void Main(string[] args)
        {
            var data = new DateTime[] { new DateTime(2018, 09, 01), new DateTime(2018, 08, 11) };
            var query = data.Where(x => x.Date.ToString("D").Contains("Aug"));
            foreach (var dat in query)
            {
                Console.WriteLine(dat);
            }
            Console.ReadKey();
        }
    }

请让我知道这对你有没有用。


推荐阅读