Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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# 我需要从ICollection填写lambda查询<;int>;_C#_Linq_Lambda - Fatal编程技术网

C# 我需要从ICollection填写lambda查询<;int>;

C# 我需要从ICollection填写lambda查询<;int>;,c#,linq,lambda,C#,Linq,Lambda,这是我第一次使用linq和lambda函数。我正在使用.NETCore和EFCore3.0 欧盟的先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆快乐先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆 var years = new List<int> { 2017, 2018,

这是我第一次使用linq和lambda函数。我正在使用.NETCore和EFCore3.0

欧盟的先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆快乐先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆先兆

            var years = new List<int>
            {
                2017,
                2018,
                2019
            };
我的存储库

        public virtual IEnumerable<T> Find(Expression<Func<T, bool>> predicate)
        {
            var result = _DbSet.Where(predicate);

            return result;
        }  
公共虚拟IEnumerable查找(表达式谓词)
{
var result=_DbSet.Where(谓词);
返回结果;
}  

您可以使用
contains
功能检查包含记录年份的年份数组 详情如下:

var years = new List<int>
            {
                2017,
                2018,
                2019
            };

var result = _myRepository.Find(x=>x.reference == reference && years.AsEnumerable().Contains( x.year));
var年份=新列表
{
2017,
2018,
2019
};
var result=_myRepository.Find(x=>x.reference==reference&&years.AsEnumerable().Contains(x.year));
您可以使用来实现它

    var years = new List<int> { 2017, 2018, 2019 };
    var _myRepository = new [] 
    { 
        new { year = 2017, reference = "123"},
        new { year = 2018, reference = "456"},
        new { year = 2019, reference = "789"}
    };
    var reference = "789";
    var result = _myRepository.Where(x =>x.reference == reference && years.Any(y => y == x.year));

    foreach(var item in result)
        Console.WriteLine(item.reference);
        // **Output**: "789"
var年份=新列表{2017、2018、2019};
var_myRepository=new[]
{ 
新{year=2017,reference=“123”},
新{year=2018,reference=“456”},
新{year=2019,reference=“789”}
};
var reference=“789”;
var result=_myRepository.Where(x=>x.reference==reference&&years.Any(y=>y==x.year));
foreach(结果中的var项目)
控制台写入线(项目参考);
//**产出**:“789”

您想知道如何在(201720182019)中的
x.year中执行
Linq
?如果是,那么您可以尝试
years.Any(y=>y==x.year)
。如果没有,请用英语详细说明您的问题。您可以使用
contains
您的请求:
var result=\u myRepository.Find(x=>x.reference==reference&&yeas.contains(x.year))
Hi@vrsfilho,您的问题有任何更新吗?它回答了你的问题吗?我需要一份年份列表来填写我用xxx标记的列表,这样这是动态的。var result=\u myRepository.Find(x=>x.reference==reference&&x.year in(x,x,x)))我使用过它,但是EF核心不理解这个查询。@vrsfilho您遇到了什么错误EF核心3.0说它无法解释查询@Ahmed@vrsfilho这是一个3.0错误,由EF3.1跟踪并在EF3.1中修复,因此您可以将EF更新为3.1,或尝试更新后的解决方案作为解决方案,该解决方案由Yousif Tks提供!过了几年(“年”不出现在等式中),我刚刚更新了我的答案。请看一下@vrsfilhoI也尝试过,但EF core 3.0表示它无法解释查询
    var years = new List<int> { 2017, 2018, 2019 };
    var _myRepository = new [] 
    { 
        new { year = 2017, reference = "123"},
        new { year = 2018, reference = "456"},
        new { year = 2019, reference = "789"}
    };
    var reference = "789";
    var result = _myRepository.Where(x =>x.reference == reference && years.Any(y => y == x.year));

    foreach(var item in result)
        Console.WriteLine(item.reference);
        // **Output**: "789"