如何将项列表从 linq 返回到 sql 查询并在控制台应用程序中调用它

本文关键字:查询 控制台 应用程序 调用 sql 列表 返回 linq | 更新日期: 2023-09-27 18:33:49

我是 C# 的新手,我正在尝试使用 EF 和 linq 查询 sql 以返回从今天到特定日期的项目(策略)列表,假设提前 60 天,这一切都发生在类库中,然后我想循环访问控制台应用程序中的项目并列出该时间段的策略, 这是我在类库中的代码。

public class Class1
    {
        public void DoSomething()
        {
            using (var context = new CRMContext())
            {
                 context.Policies.Where(p => p.new_RenewalDate == 
                                DateTime.Today.AddDays(60).Date).ToList();
            }
        }
    }

我想在控制台应用程序中调用它

public class Program
    {
        public static void Main(string[] args)
        {
            Class1 instance = new Class1();
        }
    }

我想使用 for-each 循环遍历项目并写出到控制台,如何存档?任何帮助将不胜感激。

如何将项列表从 linq 返回到 sql 查询并在控制台应用程序中调用它

public class Class1 { 
public List<Policy> DoSomething() { 
using (var context = new CRMContext()) 
{
  return context.Policies.Where(p => p.new_RenewalDate == DateTime.Today.AddDays(60).Date).ToList();
 }
 }
}


Class1 instance = new Class1();
List<Policy> list = instance.DoSomething();
foreach(Policy policy in list)
{
print what you want to print here :)
}

您只需要将策略分配给一个变量,然后遍历它:

public void DoSomething()
{
    using (var context = new CRMContext())
    {
         var targetDate = DateTime.Today.AddDays(60).Date;
         var policies = context.Policies.Where(p => p.new_RenewalDate == targetDate);
         foreach (var policy in policies)
         {
             Console.WriteLine(policy.new_RenewalDate); // etc...
         }
    }
}

在您的主程序中:

public static void Main(string[] args)
{
    Class1 instance = new Class1();
    instance.DoSomething();
}

你只需要从你用来做工作的方法中返回一个可枚举的。

public class Class1
{
    // Return list if you need list functionality, otherwise enumerable will do
    public IEnumerable<Policy> DoSomething()
    {
        using (var context = new CRMContext())
        {
             return context.Policies.Where(p => p.new_RenewalDate == 
                            DateTime.Today.AddDays(60).Date).ToList();
        }
    }
}
public class Program
{
    public static void Main(string[] args)
    {
        Class1 instance = new Class1();
        foreach (var item in instance.DoSomething())
        {
            // Do work on the item here
        }
    }
}