【发布时间】:2016-08-24 03:52:36
【问题描述】:
我有以下代码:
public class ParallelLinqAsSequential
{
private List<Customer> _orders;
private void Method()
{
var query = (_orders.AsParallel().OrderBy(ord => ord.CustomerID).Select(ord => new
{
Date = ord.OrderDate
})).AsSequential().Take(5);
}
private class Customer
{
public string CustomerID;
public DateTime OrderDate { get; set; }
}
}
我期待当通过名为“query”的变量调用语义模型时,它能够将其推断为具有“DateTime”类型字段的匿名类型的 Enumerable。但它失败并显示ErrorType。
在 Visual Studio 中,您可以看到它,如下图所示。
我用来从 Roslyn 获取这个的代码是:
public void GetType(SyntaxTree tree)
{
var Mscorlib = MetadataReference.CreateFromFile(typeof(object).Assembly.Location);
var compilation = CSharpCompilation.Create("RoslynVar", syntaxTrees: new[] { tree }, references: new[] { Mscorlib });
VariableDeclarationSyntax variable = ... // get the relevant variable
TypeInfo symbolInfo = semanticModel.GetTypeInfo(variable.Type);
}
【问题讨论】:
-
你能显示用于执行此操作的代码吗?
-
检查语义模型的诊断。也许您缺少对 System.Core 的引用