Tag: anonymous types

该类型出现在单个LINQ to Entities查询中的两个结构不兼容的初始化中

我正在尝试构建像条件查询之类的东西来从底层数据库中获取所需的数据。 目前我有以下查询(工作正常) var eventData = dbContext.Event.Select(t => new { Address = true ? new AnonymousEventGetAddress { AddressLine1 = t.Address.AddressLine1, CityName = t.Address.AddressCityName } : new AnonymousEventGetAddress(), }); 如果我改成它 var includeAddress = true; // this will normally be passed as param var eventData = dbContext.Event.Select(t => new { Address = includeAddress ? new AnonymousEventGetAddress { AddressLine1 […]

确定Type是否为匿名类型

在C#3.0中,是否可以确定Type的实例是否代表匿名类型?

LINQ to XML可选元素查询

我正在使用现有的XML文档,其结构(部分)如下: Bob 1 Larry 我正在使用LINQ to XML来查询XDocument以检索所有这些条目,如下所示: var items = from g in xDocument.Root.Descendants(“Group”).Elements(“Entry”) select new { name = (string)g.element(“Name”).Value, id = g.Elements(“ID”).Count() > 0 ? (string)g.Element(“ID”).Value : “none” }; “ID”元素并不总是存在,因此我对此的解决方案是上面的Count()爵士乐。 但我想知道是否有人有更好的方法来做到这一点。 我仍然对这些新东西感到满意,我怀疑可能有一种更好的方法来做到这一点,而不是我现在正在做的事情。 有没有更好/更优选的方式来做我想要的?

在运行时使用新的匿名类型创建lambda表达式

我想调用一个需要这样的参数的方法: Expression<Func> expr 我需要在运行时构造这个参数,因为我不知道匿名类型之前会是什么样子; 它可以有任何数量的字段: x => new { a=xa, b=xb, c=xc, etc… } 我可以在运行时创建一个具有相同“签名”的类型(这是正确的词吗?)作为所需的匿名类型,但问题是:如何在运行时从那个构造这个lambda表达式? 特别是Expression.New让我烦恼,因为我需要传递一个构造函数信息,我必须从现有类型传递它(它确实可以是一个匿名类型,但我不能在运行时创建一个匿名类型。或者是否存在一种方法吗?)。 更新 (评论中要求的某些上下文) 我想调用的方法是: DependentNavigationPropertyConfiguration.HasForeignKey(Expression<Func> foreignKeyExpression) 我想这样做的原因是自动为从某个基类inheritance的实体创建一个导航属性,包括该外键中该基类的键。 因为实体可以有多个任何类型的键字段,所以TKey类型只在运行时才为我所知。

ToString如何在匿名类型上工作?

我正在搞乱匿名类型,我不小心将它输出到控制台上。 它看起来基本上是我如何定义它。 这是一个重现它的简短程序: using System; class Program { public static void Main(string[] args) { int Integer = 2; DateTime DateTime = DateTime.Now; Console.WriteLine(new { Test = 0, Integer, s = DateTime }); Console.ReadKey(true); } } 现在,输出是: { Test = 0, Integer = 2, s = 28/05/2013 15:07:19 } 我尝试使用dotPeek进入程序集找出原因,但没有任何帮助。 [1]这是dotPeek’d代码: // Type: Program // Assembly: […]

在Object中转换匿名类型并检索一个Field

我使用C#asp.net4。 我有一个方法来填充带有匿名类型的Repeater(Fields:Title,CategoryId),在Repeater中我还放置了一个Label: var parentCategories = from c in context.CmsCategories where c.CategoryNodeLevel == 1 select new { c.Title, c.CategoryId }; uxRepeter.DataSource = parentCategories; uxRepeter.DataBind(); 我需要在Repeater事件ItemDataBound上更改Repeater中的每个标签的Text Properties protected void uxRepeter_ItemDataBound(object sender, RepeaterItemEventArgs e) { HyperLink link = (HyperLink)e.Item.FindControl(“uxLabel”); uxLabel.Text = // How to do here!!!!!!!! } 所以我需要使用e.Item设置Label.Text的属性(或者更好的方法)。 我的问题我无法使用e.Item(匿名类型字段标题)并将其设置为我的标签的Text Propriety。 我理解匿名类型只能被转换为对象类型,但在我的情况下,我的匿名类型有标题和CategoryId字段。 我的问题: 如何投射和检索我感兴趣的领域? 谢谢你的时间吗? 编辑:我收到的一些错误: Unable to cast […]

如何使用Expression构建匿名类型?

在C#3.0中,您可以使用Expression创建具有以下语法的类: var exp = Expression.New(typeof(MyClass)); var lambda = LambdaExpression.Lambda(exp); object myObj = lambda.Compile().DynamicInvoke(); 但是如何使用Expression创建Anonymous类? //anonymousType = typeof(new{ Name=”abc”, Num=123}); Type anonymousType = Expression.NewAnonymousType??? <–How to do ? var exp = Expression.New(anonymousType); var lambda = LambdaExpression.Lambda(exp); object myObj = lambda.Compile().DynamicInvoke();

Silverlight 4数据绑定与匿名类型

有谁知道你是否可以在Silverlight 4中使用匿名类型的数据绑定? 我知道你不能在之前版本的silverlight中,你只能将数据绑定到公共类属性,而匿名类型属性是内部的。 只是想知道是否有人在Silverlight 4中尝试过它?

具有匿名类型模型类的剃刀视图。 有可能的?

我想使用razor模板创建一个视图,但我不想为模型编写一个类,因为在许多视图中我将有许多查询将返回不同的模型。 例如,我有一个linq查询: from p in db.Articles.Where(p => p.user_id == 2) select new { p.article_id, p.title, p.date, p.category, /* Additional parameters which arent in Article model */ }; 我需要为此查询编写一个View。 此查询返回文章。 现在我不知道应该如何看起来像模型定义。 我试着用这个定义: @model System.Collections.IEnumerable 但后来我有一个错误,而不是文件在对象类型中不存在: * CS1061:’object’不包含’addition_field’的定义,并且没有扩展方法’addition_field’接受类型’object’的第一个参数可以找到* 这是我的模型,我不想写下一个模型。 当然

如何对返回匿名对象的ASP.NET Core MVC控制器进行unit testing?

我在unit testing返回匿名对象的ASP.NET Core MVC控制器时遇到了麻烦。 unit testing在单独的项目中设置,并直接从主项目调用控制器方法。 控制器方法返回IActionResult但通常这些是OkObjectResult和BadRequestObjectResult对象,它们被转换为具有适当HTTP状态代码的JSON响应。 匿名对象作为ObjectResult对象的构造函数参数传递,我正在尝试对其进行断言(可通过ObjectResult.Value访问)。 我发现这个问题(我如何访问asp.net 5中的内部 )有一个答案,说使用动态和添加 [assembly: InternalsVisibleTo(“Namespace”)] 到AssemblyInfo.cs,允许测试项目访问匿名对象的内部对象属性。 但是,最新版本的ASP.NET Core MVC没有AssemblyInfo.cs,并且在链接问题的答案中建议添加一个也不起作用。 是否现在有一个不同的位置来添加InternalsVisibleTo或我错过了什么?