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()
});