Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq查找符合这些条件的所有行 var mEstList=new List(); var mDatesList=新列表(“2020-03-01”、“2020-03-02”、“2020-03-03”); 变量名称列表=新列表(“名称1”、“名称2”、“名称3”); 估算表示例: ID名称估计日期 姓名150 2020-03-01 2名称1 55 2020-03-02 3姓名1542020-03-03 4姓名2432020-03-03 5姓名3 43 2020-03-01 6姓名3 42 2020-03-02 7姓名3 44 2020-03-03_C#_Linq - Fatal编程技术网

C# 使用Linq查找符合这些条件的所有行 var mEstList=new List(); var mDatesList=新列表(“2020-03-01”、“2020-03-02”、“2020-03-03”); 变量名称列表=新列表(“名称1”、“名称2”、“名称3”); 估算表示例: ID名称估计日期 姓名150 2020-03-01 2名称1 55 2020-03-02 3姓名1542020-03-03 4姓名2432020-03-03 5姓名3 43 2020-03-01 6姓名3 42 2020-03-02 7姓名3 44 2020-03-03

C# 使用Linq查找符合这些条件的所有行 var mEstList=new List(); var mDatesList=新列表(“2020-03-01”、“2020-03-02”、“2020-03-03”); 变量名称列表=新列表(“名称1”、“名称2”、“名称3”); 估算表示例: ID名称估计日期 姓名150 2020-03-01 2名称1 55 2020-03-02 3姓名1542020-03-03 4姓名2432020-03-03 5姓名3 43 2020-03-01 6姓名3 42 2020-03-02 7姓名3 44 2020-03-03,c#,linq,C#,Linq,这是我在不使用linq的情况下试图做的事情,但我正试图找出如何使用单个linq命令来做同样的事情。我试图只返回与上面的主日期列表中的所有日期相匹配的估计值,因此在我的示例中,我将返回除第4行之外的所有行 for(int h=0;hx.Name==Name&&x.Date>=2020-03-01); 如果(estList.Count>0) { var finalDate=estList.Max(x=>x.Date); var sDateList=mDatesList.Where(x=>x.Date

这是我在不使用linq的情况下试图做的事情,但我正试图找出如何使用单个linq命令来做同样的事情。我试图只返回与上面的主日期列表中的所有日期相匹配的估计值,因此在我的示例中,我将返回除第4行之外的所有行

for(int h=0;hx.Name==Name&&x.Date>=2020-03-01);
如果(estList.Count>0)
{
var finalDate=estList.Max(x=>x.Date);
var sDateList=mDatesList.Where(x=>x.Date e.Name).Where(g=>mDatesList.Where(x=>x.Date n.Date)))。
全部(d=>g.Select(e=>e.Date).Contains(d)).SelectMany(g=>g.toListSync().ConfigureAwait(false);

我会做如下事情:

mEstList=context.Estimates.GroupBy(e=>e.Name).Where(g=>mDatesList.All(d=>g.values.Select(e=>e.Date).Contains(d)).SelectMany(g=>g.values.ToList();
我没有测试这个,所以可能会有一些错误。我希望能给你一个解决这个问题的想法


祝你好运。

All方法返回布尔值,因此SelectMany使用此代码给出错误
var mEstList = new List<Estimate>();
var mDatesList = new List<DateTime>("2020-03-01", "2020-03-02", "2020-03-03");
var namesList = new List<string>("Name1", "Name2", "Name3");

Estimates Table Example:
ID     Name     Estimate     Date
1      Name1    50           2020-03-01
2      Name1    55           2020-03-02
3      Name1    54           2020-03-03
4      Name2    43           2020-03-03
5      Name3    43           2020-03-01
6      Name3    42           2020-03-02
7      Name3    44           2020-03-03
      for (int h = 0; h < namesList.Count; h++)
      {
          string name = namesList.ElementAt(h);

          var estList = context.Estimates.Where(x => x.Name == name && x.Date >= 2020-03-01);

          if (estList.Count > 0)
          {
               var finalDate = estList.Max(x => x.Date);
               var sDateList = mDatesList.Where(x => x.Date <= finalDate);

               if (estList.Count == sDateList.Count)
               {
                    mEstList.AddRange(estList);
               }
          }
     }
var mEstList = await context.Estimates.GroupBy(e => e.Name).Where(g => mDatesList.Where(x => x.Date <= DbFunctions.TruncateTime(g.Max(n => n.Date))).
All(d => g.Select(e => e.Date).Contains(d))).SelectMany(g => g).ToListAsync().ConfigureAwait(false);