可以将此Linq查询键入除"var"之外的任何内容吗?

Mik*_*e Q 3 c# linq var anonymous-types

当我执行返回匿名类型的查询时

    var assets =
        from Product p in Session.CreateLinq<Product>()
        where bundles.Contains(p.ProductBundle)
        select new {p.Asset, p.Asset.PropertyTbl};
Run Code Online (Sandbox Code Playgroud)

我可以输入var以外的其他内容吗?

Mar*_*ers 6

您不能*返回匿名类型,因为调用者不知道它是什么类型并且无法使用它.

如果要返回结果,可以创建非匿名类型的对象:

IEnumerable<Foo> assets =
    from Product p in Session.CreateLinq<Product>()
    where bundles.Contains(p.ProductBundle)
    select new Foo { Bar = p.Asset, Baz = p.Asset.PropertyTbl};
Run Code Online (Sandbox Code Playgroud)

如果您不想为值创建自定义类,也可以在.NET 4中使用Tuple类型.


*这不是严格正确的 - 这是可能的,但你应该避免这样做.无论如何,如果你真的想要,这是一个链接.