Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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

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# C更改为groupby_C#_Linq_Group By - Fatal编程技术网

C# C更改为groupby

C# C更改为groupby,c#,linq,group-by,C#,Linq,Group By,假设Myclass中有两个属性:日期、符号 我想经常在这两个属性之间转换,但我发现 对于列表向量 如果我使用 向量不再是列表的类型 如果我想将groupbyo=>o.Date转换为groupbyo=>o.Symbol 我必须使用 vector.groupby(o => o.Date).Selectmany(o => o).groupby(o => o.Symbol) 我尝试使用SortedList,但我对SortedList并不熟悉。实际上,我不知道SortedList和Gr

假设Myclass中有两个属性:日期、符号 我想经常在这两个属性之间转换,但我发现 对于列表向量 如果我使用

向量不再是列表的类型

如果我想将groupbyo=>o.Date转换为groupbyo=>o.Symbol 我必须使用

vector.groupby(o => o.Date).Selectmany(o => o).groupby(o => o.Symbol)
我尝试使用SortedList,但我对SortedList并不熟悉。实际上,我不知道SortedList和Groupby之间有什么区别。 有没有什么有效的方法来达到这样的效果,因为我高度依赖于跑步的速度

int volDay = 100;
Datetime today = new DateTime(2012, 1, 1);

//choose the effective database used today, that is the symbol with data more than volDay
var todayData = dataBase.Where(o => o.Date <= today).OrderByDescending(o => o.Date)
                .GroupBy(o => o.Symbol).Select(o => o.Take(volDay))
                .Where(o => o.Count() == volDay).SelectMany(o => o);

//Select symbols we want today
var symbolList = todayData
                .Where(o => o.Date == today && o.Eqy_Dvd_Yld_12M > 0))
                .OrderByDescending(o => o.CUR_MKT_CAP)
                .Take((int)(1.5 * volDay)).Where(o => o.Close > o.DMA10)
                .OrderBy(o => o.AnnualizedVolatility10)
                .Take(volDay).Select(o => o.Symbol).ToList();

//Select the database again only for the symbols in symbolList
var portfolios = todayData.GroupBy(o => o.Symbol)
               .Where(o=>symbolList.Contains(o.Key)).ToList();

这是我的真实代码,数据库是总数据,我将在给定的固定日期内逐日运行循环。最后一个列表公文包是我想要获得的最终目标,您可以忽略其他属性,这些属性用于日期和符号集合下的选择。如果执行.Distinct,可能会更快,或者至少更容易阅读

要获得不同的日期:

var distinctDates=vector.Selecto=>o.Date.Distinct

要获得不同的符号,请执行以下操作:

var distinctSymbols=vector.Selecto=>o.Symbol.Distinct

我问你想完成什么,以便我能给你一个有用的答案。您是否需要同时使用这两个值?例如,唯一的一组符号和日期?你应该只需要一个分组声明,这取决于你最终想要实现的目标


例如,如果您希望按多个属性分组并跟踪两个唯一的数据段,则此问题将是相关的。a.在分组后进行区分应该仍然有效。

按日期然后按符号进行第一次分组看起来毫无意义。为什么要对它们进行分组?你到底想实现什么?@ps2goat我想对每个日期或符号进行一些操作。请查看更新,我只想有效地获取列表
int volDay = 100;
Datetime today = new DateTime(2012, 1, 1);

//choose the effective database used today, that is the symbol with data more than volDay
var todayData = dataBase.Where(o => o.Date <= today).OrderByDescending(o => o.Date)
                .GroupBy(o => o.Symbol).Select(o => o.Take(volDay))
                .Where(o => o.Count() == volDay).SelectMany(o => o);

//Select symbols we want today
var symbolList = todayData
                .Where(o => o.Date == today && o.Eqy_Dvd_Yld_12M > 0))
                .OrderByDescending(o => o.CUR_MKT_CAP)
                .Take((int)(1.5 * volDay)).Where(o => o.Close > o.DMA10)
                .OrderBy(o => o.AnnualizedVolatility10)
                .Take(volDay).Select(o => o.Symbol).ToList();

//Select the database again only for the symbols in symbolList
var portfolios = todayData.GroupBy(o => o.Symbol)
               .Where(o=>symbolList.Contains(o.Key)).ToList();