Tag: lambda

如何使用C#中的“param”来运行这个例子呢?

我试图理解从RelayCommand示例中获取的这一行中param参数的含义和用法: return new RelayCommand(param => MessageBox.Show(“It worked.”)); 首先,我理解“param”参数与“params”关键字无关 ,这是正确的吗? public int Add(params int[] list) { int sum = 0; foreach (int i in list) sum += i; return sum; } 其次, 我需要添加什么样的委托代码才能使以下示例正常工作? using System; using System.Collections.Generic; namespace TestParam222 { class Program { static void Main(string[] args) { Console.WriteLine(“The total is {0}.”, Tools.GetTest(param => 23)); Console.ReadLine(); […]

IQueryable Extension:创建lambda表达式以查询关键字的列

我从CodePlex上的这个例子开始使用IQueryable扩展方法。 我认为我需要的是一个IQueryable扩展方法到“Where”,方法签名如下所示: public static IQueryable Where(this IQueryable source, string columnName, string keyword) 并有效地做到这一点(假设T.columnName是字符串类型): source.Where(p => p.ColumnName.Contains(“keyword”)) 使用上面的CodePlex示例,我想我理解他如何使OrderBy方法工作,但我的问题似乎有点复杂,我不知道如何让Contains(“关键字”)部分工作。 提前致谢, –ed 更新:9/13/2010太平洋标准时间下午6:26 我认为以下内容可行,但最终得到一个NotSupportedException(当LINQ to Entities时,LINQ表达式节点类型’Invoke’不受支持。)当我通过Count()执行表达式时。 有任何想法吗? public static IQueryable Where(this IQueryable source, string columnName, string keyword) { var type = typeof(T); var property = type.GetProperty(columnName); if (property.PropertyType == typeof(string)) { var parameter = Expression.Parameter(type, “p”); var propertyAccess […]

C# – 用于在DataGridView.Rows上循环的Lambda语法

C#中用于循环DataGridView的每个DataGridViewRow的正确lambda语法是什么? 作为一个例子,假设函数根据Cells [0]中的某个值使行.Visible = false。

重建表达式

我有一个表达式: Expression<Func> myExpression = (myObj, theType) => { myObj.Prop > theType }; 我需要动态地将myExpression重建为Expression<Func>类型的新表达式,并将第一个表达式中的“theType”参数替换为具体值123,如: Expression<Func> myNewExpression = myObj => { myObj.Prop > 123 }; 我怎样才能做到这一点? 布里菲尔

将属性作为参数传递

我想为LoadFromXML加载和validation创建一个通用的辅助方法。 如果我加载的XML不完整,我确实希望它在没有抛出exception的情况下完全失败。 目前,我的代码看起来像这样(或多或少) public override bool Load(XElement source) { return new List<Func> { i => this.LoadHelper(i.Element(User.XML_Username), ref this._username, User.Failure_Username), i => this.LoadHelper(i.Element(User.XML_Password), ref this._password, User.Failure_Password) //there are many more invokations of LoadHelper to justify this architecture } .AsParallel() .All(i => i.Invoke(source)); } private bool LoadHelper(XElement k, ref string index, string failure) { if (k != […]

如何传递lambda Expression for Generic方法的参数以检查MVC EF 4.0中的重复项

我的应用程序中有超过10个设置屏幕。 在每个中我都要检查重复数据。 例如,这是一个示例代码。 private void CheckDuplication(AIRLINE airline) { var AIRLINE = context.AIRLINEs.Where(f => f.ABBREVATION == airline.ABBREVATION).FirstOrDefault(); if (AIRLINE == null) { context.AIRLINEs.Add(airline); } else { ModelState.AddModelError(“ABBREVATION”, “Abbreviation already exists.”); } } 对于每个设置,在整个项目中使用几乎相同的代码。 我想让这个方法通用,这样我就可以在需要检查Duplicates的地方调用它。 为此,我必须将参数传递给将设置“Lambda Expression”的generics函数。 我已经创建了一个静态类来从我的应用程序中的任何位置访问它。 问题是如何将参数传递给这样的类(包含generics方法),该类将为不同的表和列设置lambda表达式并显示通用错误消息。在此先感谢。

如何在lambda表达式或linq中执行此操作?

我有这个要求, 产品可以有多个图像,只有一个默认图像。 如果属性isDefault等于true,则可以确定产品的默认图像。 我想在LINQ和lambda中做到这一点,但我被困在我的代码中: private class ProdcutImages { public Int32 ID { get; set; } public String ProductID { get; set; } public Boolean IsDefault { get; set; } public Image Image { get; set; } public String FileName { get; set; } } public void SetDefaultImage(int productID) { SqlConnection conn = getConnection(); conn.Open(); SqlDataAdapter […]

当它不是静态时,如何使用现有方法而不是lambda?

这必须是重复但我还没有找到它。 我发现这个问题是相关的,因为它回答了为什么建议使用方法组而不是lambda。 但是,如果方法不在当前类中且方法不是static我如何使用现有方法组而不是lambda? 假设我有一个我希望转换为字符串的整数列表,我可以使用List.ConvertAll ,但我需要将Converter传递给它: List ints = new List { 1 }; List strings = ints.ConvertAll(i => i.ToString()); 这有效,但它使用lambda创建了一个不必要的匿名方法。 因此,如果Int32.ToString是静态的并且将采用int我可以写: List strings = ints.ConvertAll(Int32.ToString); 但那当然不能编译。 那么我怎么能使用方法组呢? 如果我要创建这样的实例方法 string FooInt(int foo) { return foo.ToString(); } 我可以使用strings = ints.ConvertAll(FooInt); ,但这不是我想要的。 我不想创建一个新方法只是为了能够使用现有的方法。

方法链接相当吗?

这工作正常(从初始测试)。 由于方法链接是我的首选格式,我试图弄清楚链接等价的方法是什么,但没有运气。 有任何想法吗? var data = (from p in db.Persons from c in db.Companies where c.CompanyName == companyName && p.CompanyId == c.CompanyId select p) .Select(p => new { Id = p.PersonId, Name = string.Format(“{0} {1}”, p.FirstName, p.LastName) }); 谢谢, –ed

执行进程的C#类中的异步方法

我对这篇文章有一个后续问题。 在我的版本中,我有以下我想要异步。 这是我有的: public virtual Task ExecuteAsync() { var tcs = new TaskCompletionSource(); string exe = Spec.GetExecutablePath(); string args = string.Format(“–input1={0} –input2={1}”, Input1, Input2); try { var process = new Process { EnableRaisingEvents = true, StartInfo = { UseShellExecute = false, FileName = exe, Arguments = args, RedirectStandardOutput = true, RedirectStandardError = true, WorkingDir = […]