Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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到对象并过滤周期_C#_Linq - Fatal编程技术网

C#LINQ到对象并过滤周期

C#LINQ到对象并过滤周期,c#,linq,C#,Linq,在LINQ中,运算符之间没有任何连接。那么,如何使用LINQ在两个时段之间提取数据呢? 如何使用LINQ提取2010财年至2014年第3季度的所有期间 首先我尝试了这种方法 List<string> periods = new List<string>(); periods.Add("2010 FYA"); periods.Add("2011 FYA"); periods.Add("2012 FYA");

在LINQ中,运算符之间没有任何连接。那么,如何使用LINQ在两个时段之间提取数据呢? 如何使用LINQ提取2010财年至2014年第3季度的所有期间

首先我尝试了这种方法

 List<string> periods = new List<string>();
 periods.Add("2010 FYA");
 periods.Add("2011 FYA");
 periods.Add("2012 FYA");
 periods.Add("2013 FYA");
 periods.Add("1Q 2014A");
 periods.Add("2Q 2014A");
 periods.Add("3Q 2014A");
 periods.Add("4Q 2014A");
 periods.Add("2014 FYA");

 var xx = periods.Where(a => a.ToString() == "2010 FYA" && a.ToString() == "3Q 2014A").ToList();
    List<string> periods = new List<string>();
    periods.Add("2010 FYA");
    periods.Add("2011 FYA");
    periods.Add("2012 FYA");
    periods.Add("2013 FYA");
    periods.Add("1Q 2014A");
    periods.Add("2Q 2014A");
    periods.Add("3Q 2014A");
    periods.Add("4Q 2014A");
    periods.Add("2014 FYA");

    var xx = periods.Where(a => RemoveMiddleSpace(a.Replace("A", "").Replace("E", "").Replace("FY", "").Replace("Q", "")) 
        == RemoveMiddleSpace("2010 FYA".Replace("A", "").Replace("E", "").Replace("FY", "").Replace("Q", ""))
        && RemoveMiddleSpace(a.Replace("A", "").Replace("E", "").Replace("FY", "").Replace("Q", ""))
        == RemoveMiddleSpace("3Q 2014A".Replace("A", "").Replace("E", "").Replace("FY", "").Replace("Q", ""))).ToList();
List periods=new List();
期间。添加(“2010财年”);
期间。添加(“2011财年”);
期间。添加(“2012财年”);
期间。添加(“2013财年”);
期间。添加(“2014年第1季度a”);
期间。添加(“2014年第2季度a”);
期间。添加(“第三季度2014A”);
期间。添加(“2014年第4季度a”);
期间。添加(“2014财年”);
var xx=期间,其中(a=>a.ToString()=“2010财年”和&a.ToString()=“第三季度2014A”).ToList();
第二条道路

 List<string> periods = new List<string>();
 periods.Add("2010 FYA");
 periods.Add("2011 FYA");
 periods.Add("2012 FYA");
 periods.Add("2013 FYA");
 periods.Add("1Q 2014A");
 periods.Add("2Q 2014A");
 periods.Add("3Q 2014A");
 periods.Add("4Q 2014A");
 periods.Add("2014 FYA");

 var xx = periods.Where(a => a.ToString() == "2010 FYA" && a.ToString() == "3Q 2014A").ToList();
    List<string> periods = new List<string>();
    periods.Add("2010 FYA");
    periods.Add("2011 FYA");
    periods.Add("2012 FYA");
    periods.Add("2013 FYA");
    periods.Add("1Q 2014A");
    periods.Add("2Q 2014A");
    periods.Add("3Q 2014A");
    periods.Add("4Q 2014A");
    periods.Add("2014 FYA");

    var xx = periods.Where(a => RemoveMiddleSpace(a.Replace("A", "").Replace("E", "").Replace("FY", "").Replace("Q", "")) 
        == RemoveMiddleSpace("2010 FYA".Replace("A", "").Replace("E", "").Replace("FY", "").Replace("Q", ""))
        && RemoveMiddleSpace(a.Replace("A", "").Replace("E", "").Replace("FY", "").Replace("Q", ""))
        == RemoveMiddleSpace("3Q 2014A".Replace("A", "").Replace("E", "").Replace("FY", "").Replace("Q", ""))).ToList();
List periods=new List();
期间。添加(“2010财年”);
期间。添加(“2011财年”);
期间。添加(“2012财年”);
期间。添加(“2013财年”);
期间。添加(“2014年第1季度a”);
期间。添加(“2014年第2季度a”);
期间。添加(“第三季度2014A”);
期间。添加(“2014年第4季度a”);
期间。添加(“2014财年”);
var xx=期间。其中(a=>removeMidleSpace(a.Replace(“a”),替换(“E”),替换(“FY”),替换(“Q”),替换
==RemoveMiddleSpace(“2010财年”)。替换(“A”和“)。替换(“E”和“)。替换(“FY”和“)。替换(“Q”和“))
&&RemoveMiddleSpace(a.Replace(“a”),Replace(“E”,“E”)。Replace(“FY”,“FY”)。Replace(“Q”,“FY”))
==RemoveMiddleSpace(“3Q 2014A”)。替换(“A”和“)。替换(“E”和“)。替换(“FY”和“)。替换(“Q”和“)))。ToList();

这两个没有得到我预期的产出。我知道如果我能将我的周期转换为日期,那么这是可能的。如何将我的周期转换为正确的日期?

您可以使用以下机制解决此问题

        int startIndex = periods.IndexOf("2010 FYA");
        int endIndex = periods.IndexOf("3Q 2014A");
        var anybetween = periods.Skip(startIndex).Take((endIndex-startIndex) + 1).ToList();

Take
不应该是
((endIndex-startIndex)+1)
?@jitendra这工作
var anybetween=periods.Skip(startIndex.Take)((endIndex-startIndex)+1)).ToList()