Tag: lambda

Lambda“if”声明?

我有两个对象,我想将它们转换为dictionarys。 我用toDictionary ()。 获取密钥的一个对象的lambda表达式是(i => i.name)。 对于另一个,它是(i => i.inner.name)。 在第二个中,i.name不存在。 如果i.name没有,i.inner.name总是存在。 是否有一个lambda表达式可以用来组合这两个? 基本上读作: “如果i.name存在,则将id设置为i.name,否则将id设置为i.inner.name”。 非常感谢。 更新 当我说“不存在”时,我的意思是对象实际上没有属性,而不是属性只是null。

LambB表达式中的GroupBy

from x in myCollection group x by x.Id into y select new { Id = y.Key, Quantity = y.Sum(x => x.Quantity) }; 你如何将上面的内容写成lambda表达式? 我被困在group into 。

深入选择多个级别

我可以使用SelectMany在集合中展平子集合的结果: // a list of Foos, a Foo contains a List of Bars var source = new List() { … }; var q = source.SelectMany(foo => foo.Bar) .Select(bar => bar.barId) .ToList(); 这给了我Foo列表中所有Bar ID的列表。 当我尝试深入三级时,返回错误的结果。 var q = source.SelectMany(foo => foo.Bar) .SelectMany(bar => bar.Widget) .Select(widget => widget.WidgetId) .ToList(); 我应该如何使用SelectMany获取Foos列表中所有条形图中所有小部件的列表? 编辑我错过了上面的句子,但代码反映了目标。 我正在寻找所有Widget ID的列表,而不是小部件。 “不正确”的结果并非返回所有窗口小部件ID。

如果直到运行时才知道类型,如何创建Expression.Lambda?

最好使用代码解释。 我有一个generics类,它有一个返回整数的方法。 这是一个简单的版本,用于解释… public class Gen { public int DoSomething(T instance) { // Real code does something more interesting! return 1; } } 在运行时,我使用reflection来发现某事物的类型,然后想要为该特定类型创建我的Gen类的实例。 这很容易,像这样做…… Type fieldType = // This is the type I have discovered Type genericType = typeof(Gen).MakeGenericType(fieldType); object genericInstance = Activator.CreateInstance(genericType); 我现在想要创建一个Expression,它将参数作为generics类型的一个实例,然后调用该类型的DoSomething方法。 所以我希望Expression能有效地执行此操作…… int answer = genericInstance.DoSomething(instance); …除了我之前在运行时稍后没有’实例’并且genericInstance是生成的类型,如上所示。 我为此创建Lambda的尝试如下…… MethodInfo mi = […]

什么是PowerShell中的Linq.First等价物?

下面的代码片段从文件列表中检测到哪些文件是Ftp上的目录 作为C#,它将如下所示 var files = new List(){“App_Data”, “bin”, “Content”}; var line = “drwxr-xr-x 1 ftp ftp 0 Mar 18 22:41 App_Data” var dir = files.First(x => line.EndsWith(x)); 我如何在PowerShell中转换最后一行?

从列表1中删除不在列表2中的项目

我正在学习编写lambda表达式 ,我需要有关如何从列表中删除不在另一个列表中的所有元素的帮助。 var list = new List {1, 2, 2, 4, 5}; var list2 = new List { 4, 5 }; // Remove all list items not in List2 // new List Should contain {4,5} // The lambda expression is the Predicate. list.RemoveAll(item => item. /*solution expression here*/ ); // Display results. foreach (int i […]

使用lambda表达式与私有方法

我读了一个关于Stack Overflow问题的答案,其中包含以下建议代码: Action logAndEat = ex => { // Log Error and eat it }; try { // Call to a WebService } catch (SoapException ex) { logAndEat(ex); } catch (HttpException ex) { logAndEat(ex); } catch (WebException ex) { logAndEat(ex); } 我的问题是:对于LogAndEat使用lambda表达式而不是(在我看来更简单,更明显)私有方法的优点(如果有的话)是什么,如下所示: private void LogAndEat(Exception ex) { // Log Error and eat it } 编辑:感谢目前为止的答案,但只是更清楚地重述我的基本问题:哪种方法更好/你会在这个例子中推荐吗? […]

构建LINQ表达式树:如何在范围内获取变量

我正在构建一个LINQ表达式树,但它不会编译,因为据称局部变量$var1超出了范围: 变量”类型’System.Object’从范围”引用,但它没有定义 这是表达式树: .Block() { $var1; .If ($n.Property1 == null) { .Block() { $var1 = null; .Return #Label1 { } } } .Else { .Default(System.Void) }; $var1 = (System.Object)($n.Property1).Length; .Label .LabelTarget #Label1:; $var1 } 以下代码负责构建树。 它是更大的东西的一部分,因此我不希望它的目的从这个例子中完全清楚。 MemberExpression sourceExpression = …; List expressions = new List(); LabelTarget returnTarget = Expression.Label(); ParameterExpression resultVariable = Expression.Variable(typeof(object)); expressions.Add(resultVariable); expressions.Add( […]

如何动态构建()=> x.prop lambda表达式?

我的代码就像 DepartmentPaperConsumption dto = null; 然后我有NHibernate QueryOver结果,我想订购它 result.OrderByAlias(() => dto.TotalColorCopys); 但我想能够用字符串动态地指定dto任何属性。 我尝试使用动态LINQ,但似乎我无法得到它。 我也试过从头开始构建LambdaExpression – 也没有运气。 我将不胜感激任何帮助。

使用对象初始值设定项创建实例的表达式

有没有办法用对象初始化器和表达式树创建对象的实例? 我的意思是创建一个表达式树来构建这个lambda: // my class public class MyObject { public bool DisplayValue { get; set; } } // my lambda: var lambda = (Func) (displayValue => new MyObject { DisplayValue = displayValue }); 如何使用表达式树创建此lambda? 更新: 我试着自己编写以下代码: public static Func Creator; static void BuildLambda() { var expectedType = typeof(MyObject); var displayValueParam = Expression.Parameter(typeof(bool), “displayValue”); var ctor […]