Tag: lambda

如何使用动态构建的lambda表达式创建和填充动态对象

我正在尝试从仅在运行时知道的数据集创建和填充动态对象。 在下面的代码中,我使用一些已知字段(ID,主数据,DisplayOrder,IsActive)和一个用户定义字段(电话号码)从我的数据集创建IEnumerable结果,这在设计时我不知道,因此必须动态构建。 下面的代码有效,但仅仅因为我已经对动态字段电话号码进行了硬编码。 如何动态构建Lambda表达式以处理仅在运行时已知的字段。 我想要相当于 string fieldName = ‘PhoneNumber = ‘; string fieldSource = ‘pd.tbList_DataText’; string expression = ‘pd=>new { ID = pd.ID, PrimaryData=pd.PrimaryData’; expression += fieldName; expression += FieldSource; expression += ‘.Where(ld => ld.DataRowID == pd.ID && ld.ListColumnID == 1).Select(ld => ld.DataField).DefaultIfEmpty(“”).First()})’; var results = primaryData.Select(expression); 那我该怎么做呢? 谢谢 // Get base Data IEnumerable primaryData […]

Objective-C是否具有像C#一样的列表Lambda查询?

例如,我有一个简单的C#代码块: IList list = new List(); list.Add(“Objective-C”); list.Add(“C#”); list.Add(“C++”); list.Add(“Java”); list.Add(“Python”); var filteredList = list.Where(c => c.Contains(“C”)).ToList(); filteredList只包含“Objective-C” , “C#”和“C ++” 。 我想知道Objective-C是否支持使用像这样的lambda过滤对象列表(NSArray)的任何方法? 谢谢。

按内部列表参数分组以过滤外部列表数据

我是新手编写查询以从对象列表中获取数据。 我有以下阶级结构 public class Locations { public string id { get; set; } public string name { get; set; } public List model { get; set; } public List sectors { get; set; } } public class Sector { public string sectoreid { get; set; } public string sectorname { get; set; } public List […]

无法将lambda表达式转换为类型’System.Delegate’,因为它不是委托类型

我为class1定义了一个依赖属性,它引发了一个事件。 我不知道为什么它给我这个错误“无法将lambda表达式转换为’System.Delegate” public static readonly DependencyProperty class1Property = DependencyProperty.Register(“class1Property”, typeof(Class1), typeof(UserControl1), new PropertyMetadata(null)); public Class1 class1 { get { return Dispatcher.Invoke((() => GetValue(class1Property)))as Class1; } set { Dispatcher.Invoke(new Action(() => { SetValue(class1Property, value); })); } } 非常简单的Class1代码: public class Class1 { public delegate void myhandler(object sender, EventArgs e); public event myhandler test; public void connection() […]

为什么我不能删除只有.DeleteObject(o)的实体?

此代码有效: var c = cboCustomer.SelectedItem as Customer; var t = cboTrailer.SelectedItem as Trailer; using (var db = new CAPSContainer()) { db.Attach(c); db.Attach(t); c.Trailers.Remove(t); db.DeleteObject(t); db.SaveChanges(); } 但我不明白为什么我不能这样做: db.Attach(t); db.DeleteObject(t); db.SaveChanges(); 如果我尝试我得到: ‘CAPSContainer.Trailers’中的实体参与’CustomerTrailer’关系。 找到0个相关的“客户”。 1’客户’是预期的。 我首先使用EF 5.0模型,这里是edmx图的一部分: 我发现很难理解为什么,请帮忙。 更新1(如Boomer所建议): using (var db = new CAPSContainer()) { db.Attach(c); //db.Attach(t); //c.Trailers.Remove(t); db.DeleteObject(t); db.SaveChanges(); } 退货: 无法删除该对象,因为在ObjectStateManager中找不到该对象。

为什么生成的DataBaseManagerController表头是使用ASP MVC 4中的lambda表达式生成的

我为我的解决方案生成了StoreManagerController 。 Visual Studio 2013生成了此类StoreManager/Index.cshtml view @model IEnumerable @{ ViewBag.Title = “Index”; } Index @Html.ActionLink(“Create New”, “Create”) @Html.DisplayNameFor(model => model.Genre.Name) @Html.DisplayNameFor(model => model.Artist.Name) @* @Html.DisplayNameFor(model => model.Title)*@ TITLE @Html.DisplayNameFor(model => model.Price) @foreach (var item in Model) { @Html.DisplayFor(modelItem => item.Genre.Name) @Html.DisplayFor(modelItem => item.Artist.Name) @Html.DisplayFor(modelItem => item.Title) @Html.DisplayFor(modelItem => item.Price) @Html.ActionLink(“Edit”, “Edit”, new { id=item.AlbumId }) […]

如何使用非genericsLambda生成子查询

您如何将以下通用Lambda函数转换为lambda表达式: context.AssociateWith(p => p.Regions.Where(r => r.Country == ‘Canada’) 我正在尝试创建一个完整的lambda表达式,没有任何或直接调用。 就像是 : void AddFilter(ITable table, MetaDataMember relation) { var tableParam = Expression.Parameter(table.ElementType, “e”); var prop = Expression.Property(tableParam, relation.Name); var func = typeof(Func).MakeGenericType(table.ElementType, relation.type) var exp = Expression.Lambda(func, prop, tableParam); } 这将产生e.Regions ……但我无法从那里获得Where部分……

查询FirstOrDefault的动态对象列表

以下代码将返回Enumerable动态对象。 protected override dynamic Get(int id) { Func check = x => x.ID == id; return Enumerable.Where(this.Get(), check); } 如何选择FirstOrDefault以使它是单个对象而不是Enumerable? 与此答案类似,但只想要SingleOrDefault。

如何将表达式从类型接口转换为特定类型

在我的界面中,我有以下定义 List GetListOfFoo(Expression<Func> predicate) where T : IFoo; 在我的实现中,我将以特定类型转换表达式: if (typeof(T) == typeof(Foo)) { Expression converted = Expression.Convert(predicate.Body, typeof(Foo)); Expression<Func> newPredicate = Expression.Lambda<Func>(converted, predicate.Parameters); } 我尝试使用这样的实现: Expression<Func> predicate = c => c.Name == “Myname”; _repository.GetListOfFoo(predicate); 我没有编译错误,但是如果我使用它,我会得到一个exception,即ExpressionBody中定义的bool参数。 我的问题在哪里?

如何指定谓词的类型,直到运行时我才知道?

我的存储库方法从数据库中提取东西。 它接受排序顺序作为参数: IEnumerable getCars(Expression<Func> sort); 我使用TSortKey ,因为我不知道在运行时将使用哪个属性,它可能是x => x.Name或x => x.Make是字符串,但也可能是x => x.History.Age是一个整数。 用户选择排序顺序,然后在交换机中设置排序谓词并调用该方法。 Expression<Func> sortPredicate; switch (sortOption) { case SortOption.Name: sortPredicate = s => s.Name; break; case SortOption.Make: sortPredicate = s => s.Make; break; case SortOption.Age: sortPredicate = s => s.History.Age; break; default: sortPredicate = s => s.Name; break; } var cars = repo.getCars(sortPredicate); […]