Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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/0/vba/15.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# 4.0 使用非查询表达式将一种类型的列表展平到另一种类型_C# 4.0 - Fatal编程技术网

C# 4.0 使用非查询表达式将一种类型的列表展平到另一种类型

C# 4.0 使用非查询表达式将一种类型的列表展平到另一种类型,c#-4.0,C# 4.0,是否可以使用非查询表达式将一种类型的列表展平为另一种类型的列表 public class TypeQuote { public string symbol { get; set; } public string type { get; set; } public decimal price { get; set; } } public class BidAskQuote { public string symbol { get; set; } publi

是否可以使用非查询表达式将一种类型的列表展平为另一种类型的列表

public class TypeQuote
{
    public string symbol { get; set; }
    public string type { get; set; }
    public decimal price { get; set; }
}

public class BidAskQuote
{
    public string symbol { get; set; }
    public decimal bidPrice { get; set; }
    public decimal askPrice { get; set; }

}

List<TypeQuote> quotes = new List<TypeQuote>();

quotes[0] = new TypeQuote() { symbol = "IBM", type = "Bid", price = 167.24M };
quotes[1] = new TypeQuote() { symbol = "IBM", type = "Ask", price = 167.35M };
quotes[2] = new TypeQuote() { symbol = "MSFT", type = "Bid", price = 63.46M };
quotes[3] = new TypeQuote() { symbol = "MSFT", type = "Ask", price = 63.52M };

List<BidAskQuote> bidAskQuotes = 
quotes.GroupBy(g => g.symbol, new BidAskQuote { symbol = g.symbol, ??? }).ToList();
公共类TypeQuote
{
公共字符串符号{get;set;}
公共字符串类型{get;set;}
公共十进制价格{get;set;}
}
公共类投标报价
{
公共字符串符号{get;set;}
公共价格{get;set;}
公共十进制askPrice{get;set;}
}
列表引号=新列表();
quotes[0]=newtypequote(){symbol=“IBM”,type=“Bid”,price=167.24M};
quotes[1]=newtypequote(){symbol=“IBM”,type=“Ask”,price=167.35M};
quotes[2]=新类型QUOTE(){symbol=“MSFT”,type=“Bid”,price=6346万};
quotes[3]=newtypequote(){symbol=“MSFT”,type=“Ask”,price=63.52M};
列表bidAskQuotes=
GroupBy(g=>g.symbol,新的BidAskQuote{symbol=g.symbol,??}).ToList();

我一直在琢磨如何在表达式中有选择地分配bidPrice和askPrice字段

您可以进一步筛选组,如:

List<TypeQuote> quotes = new List<TypeQuote>();

    quotes.Add(new TypeQuote() { symbol = "IBM", type = "Bid", price = 167.24M });
    quotes.Add(new TypeQuote() { symbol = "IBM", type = "Ask", price = 167.35M });
    quotes.Add(new TypeQuote() { symbol = "MSFT", type = "Bid", price = 63.46M });
    quotes.Add(new TypeQuote() { symbol = "MSFT", type = "Ask", price = 63.52M });

    var bidAskQuotes = quotes
        .GroupBy(g => g.symbol)
        .Select(grp => new BidAskQuote 
            {   
                symbol = grp.Key, 
                askPrice = grp.Where(x => x.type == "Ask").Select(x => x.price).FirstOrDefault(),
                bidPrice = grp.Where(x => x.type == "Bid").Select(x => x.price).FirstOrDefault()
            });
List quotes=newlist();
添加(新的TypeQuote(){symbol=“IBM”,type=“Bid”,price=167.24M});
添加(新的TypeQuote(){symbol=“IBM”,type=“Ask”,price=167.35M});
添加(新的TypeQuote(){symbol=“MSFT”,type=“Bid”,price=6346m});
添加(新的TypeQuote(){symbol=“MSFT”,type=“Ask”,price=63.52M});
var bidAskQuotes=quotes
.GroupBy(g=>g.symbol)
.选择(grp=>new BidAskQuote
{   
符号=grp.键,
askPrice=grp.Where(x=>x.type==“Ask”)。选择(x=>x.price)。FirstOrDefault(),
bidPrice=grp.Where(x=>x.type==“Bid”)。选择(x=>x.price)。FirstOrDefault()
});