Tag: anonymous types

VB.Net中的匿名类初始化

我想在vb.net中创建一个完全像这样的匿名类: var data = new { total = totalPages, page = page, records = totalRecords, rows = new[]{ new {id = 1, cell = new[] {“1”, “-7”, “Is this a good question?”}}, new {id = 2, cell = new[] {“2”, “15”, “Is this a blatant ripoff?”}}, new {id = 3, cell = new[] {“3”, “23”, […]

在List 上对Datagridview数据源进行排序,其中T是匿名的

一个相对简单的问题。 我有一个datagridview,它所做的就是显示统计信息。 没有编辑/添加/删除行。 datagridview绑定到List。 我想要实现的是让用户能够对列进行排序。 class Market { public int Location {get;set;} public float Value {get;set;} //… } class City { public String Name {get;set;} //… } List _markets; List _cities; //Lists are populated. dataGridView1.DataSource = _markets.Select(market => new { _cities[market.Location].Name, market.Value}).ToList(); 正如所料,列不可排序,但显示的信息是您想要的。 我的问题是如何根据具有最少复杂和最少代码量的列类型进行DataGridView排序,因为代码将在整个过程中多次使用。 此应用程序用于使用具有视图的数据库。 然后这些视图填充DataGridViews。 视图仍然存在,因此可能的解决方案可能是: DataBase.ViewMarketValue temp = new DataBase.ViewMarketValue() _markets.ForEach(market => temp.AddViewMarketValueRow(_cities[market.Location].Name, […]

无法将null赋给array类型的匿名属性

我有任何具有( Hanger )属性的( Pilot )对象数组,它可以为null,它本身具有( List )属性。 出于测试目的,我想简化并将其“展平”为具有属性PilotName (字符串)和Planes (数组)的匿名对象,但不确定如何处理空的Hanger属性或空的PlanesList 。 (为什么是匿名对象?因为我正在测试的API的对象是只读的,我希望测试是’声明性的’:自包含,简单易读……但我对其他建议持开放态度。我也是我试图了解有关LINQ的更多信息。) 例 class Pilot { public string Name; public Hanger Hanger; } class Hanger { public string Name; public List PlaneList; } class Plane { public string Name; } [TestFixture] class General { [Test] public void Test() { var pilots = new Pilot[] { […]

如何创建一个动态确定的属性名称的匿名对象?

给定一个值数组,我想创建一个具有基于这些值的属性的匿名对象。 属性名称只是”pN” ,其中N是数组中值的索引。 例如,给定 object[] values = { 123, “foo” }; 我想创建一个匿名对象 new { p0 = 123, p1 = “foo” }; 我能想到的唯一方法就是使用一个switch或链接到合理数量的参数来支持,但我想知道是否有更优雅的方法来做到这一点: object[] parameterValues = new object[] { 123, “foo” }; dynamic values = null; switch (parameterValues.Length) { case 1: values = new { p0 = parameterValues[0] }; break; case 2: values = new { […]

LINQ,匿名类型和闭包问题

我有一段代码使用LINQ过滤列表,创建匿名类型的实例列表,并为每个实例分配一个事件处理程序: // Select every linear expression and create a menu item from it var items = from expr in expressionList.Expressions where expr.Type == ExpressionType.Linear let stdExpr = (StandardExpression)expr select new { Menu = new ToolStripMenuItem(stdExpr.Expression), // string stdExpr.Slot // int }; // Wire a Click event handler to each menu to set the tracked line […]

为什么使用匿名类型而不是创建类

我正在重构一个较旧的应用程序,它使用动态内联SQL,从大型Oracle数据库中提取数据。 我创建了一个工作正常的存储过程(PL / SQL)。 因为它只有一行(datarow),所以我让它返回一个数据行。 该类位于DAL中。 在我重构的过程中,我认为我会将数据库(在DAL中)与业务层隔离(使用linQ)。 我的第一个想法是创建一个包含返回的数据行的对象。 我的一位同事推荐匿名类型 ,我不熟悉。 在我迄今为止所做的阅读中,它看起来很简单。 如果我仍然必须使用匿名类型放置字段名和字段类型,我只是没有看到它的值。 我错过了什么吗? 如果我返回一个数据集/数据表,那么使用匿名类型会有更多的价值吗?

从列表值c#动态创建匿名对象

我有一个列表(或可以是数组)的字符串,我想动态创建一个匿名对象。 我该怎么做呢? var dataSet = new DataSet(); dataSet.ReadXml(@””); var dataTable = dataSet.Tables[0]; var dataRow = dataTable.Rows[0]; var keys = new List {“Column1″,”Column2”}; var result = new {keys[0] = dataRow[keys[0]], keys[1] = dataRow[keys[1]]} 因此,名为“keys”的列表将在此方法之外创建,并且可以包含1到多个值。 我尝试创建一个字典并循环遍历列表并向字典添加键/值对,但后来我无法弄清楚如何将字典转换回匿名类型。 我也尝试过expando对象,但这似乎并没有让我更进一步。 我必须能够返回一个匿名类型,因为此方法的结果将与LINQ查询的GroupBy子句一起使用。 这是我必须动态创建字典的方法: public object Key(DataRow dataRow, List keys) { var dictionary = new IDictionary; foreach (string key in keys) { […]

是否可以在匿名类型中有一个条件字段

我有一些看起来像这样的代码,并从现有的集合创建一个列表 var items = items.ConvertAll(r => new { description = FormatDescription(r), start = r.Milestone.HasValue ? r.Milestone.Value.ToString(“yyyy-MM-ddTHH:mm:ssZ”) : DateTime.Today.ToString(“yyyy-MM-ddTHH:mm:ssZ”), classname = “significance” + r.SignificanceLevel, 正如你所看到的,现在如果我没有开始日期(r.Milestone)那么我就把它放在今天的日期。 我真的想做的如果说: 如果我有一个r.Milestone.Hasvalue显示该日期,如果我没有值,则根本不具有匿名类型的START DATE字段。 是否可以使用此条件逻辑,您可以在此类代码中一起删除字段?

C#to VB.NET语法转换,用于具有属性的类实例化

我正在使用Workflow Foundations 4(在C#中)并且正在尝试编写VB.NET表达式。 有没有办法在一行中的VB.NET中执行以下操作? SomeObj instance = new SomeObj() { SomeStringProp = “a”, SomeIntProp = 17 };

适用于匿名类型的IQIeryable

我使用EntityFramework,我正在查询并使用匿名类型返回部分数据。 目前我正在使用IQueryable ,它可以工作,但我想知道这是否是正确的方法,或者是否有其他一些我不知道的返回数据类型。 public IQueryable FindUpcomingEventsCustom(int daysFuture) { DateTime dateTimeNow = DateTime.UtcNow; DateTime dateTimeFuture = dateTimeNow.AddDays(daysFuture); return db.EventCustoms.Where(x => x.DataTimeStart > dateTimeNow & x.DataTimeStart new { y.EventId, y.EventTitle, y.DataTimeStart}); }