Tag: lambda

LINQ选择第一

嗨,我有这个linq代码 var fp = lnq.attaches.First(a => a.sysid == sysid).name; 在分析时,它会生成以下t-sql SELECT TOP (1) [t0].[sysid], [t0].[name], [t0].[att_size], [t0].[cid], [t0].[flags], [t0].[contents] FROM [lntmuser].[attach] AS [t0] 我看待它的方式,它像select *一样返回,这将导致查询执行表扫描,而不是使用索引。 表现不佳。 我怎么能只选择名称列,如: SELECT TOP (1)[t0].[name] FROM [lntmuser].[attach] AS [t0] 提前致谢 编辑:根据需要破碎眼镜解决方案配置文 SELECT TOP (1) [t0].[name] FROM [lntmuser].[attach] AS [t0] WHERE [t0].[sysid] = @p0

将列表拆分为多个列表,其中序列递增

我有一个int列表,我希望在找到较低或相同的数字后拆分原始列表后创建多个List。 数字不按排序顺序排列。 List data = new List { 1, 2, 1, 2, 3, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6 }; 我希望结果如下: { 1, 2 } { 1, 2, 3 } { 3 } { 1, 2, 3, 4 } { 1, 2, 3, 4, 5, 6 } 目前,我正在使用以下linq来做到这一点,但没有帮助我: List data […]

LINQ to SQL通配符

如何在LINQ To SQL lambda表达式中构建通配符? 这就是我目前所拥有的: var query = from log in context.Logs select log; foreach (string filter in CustomReport.ExtColsToFilter) { string tempFilter = filter; query = query.Where(Log => Log.FormattedMessage.Contains(tempFilter)); } 这很好用,直到我尝试在filter字符串中传递通配符。 我正在尝试使用SqlMethods.Like()但无济于事。 上面的filter如下所示: “NIDmcass” 。 我希望能够传递这样的filter: “NID%m%”

C# – 使用lambda表达式或LINQ填充列表

已经有一段时间了,因为我已经使用了lambda表达式或LINQ,并且想知道如何使用这两种方法执行以下操作(我知道我可以使用foreach循环,这只是出于好奇)。 我有一个字符串路径数组(如果这是一个数组或列表,它会有所不同吗?)我想从中返回一个只有文件名的新列表。 即使用foreach循环,它将是: string[] paths = getPaths(); List listToReturn = new List(); foreach (string path in paths) { listToReturn.add(Path.GetFileName(path)); } return listToReturn; 我如何用lambda和LINQ做同样的事情? 编辑:在我的情况下,我使用返回的列表作为ListBox(WPF)的ItemsSource所以我假设它将需要是一个列表而不是IEnumerable?

替换表达式树中的类型

我正在努力修改表达式树。 我简化了示例,以便在此处更容易显示。 让我们从两个类开始: public class Filter { public string FilterableProperty1 { get; set; } public string FilterableProperty2 { get; set; } } public class Entity { public string FilterableProperty1 { get; set; } public string FilterableProperty2 { get; set; } public string NonFilterableProperty { get; set; } } Filter类中的所有属性也存在于Entity类中。 现在我想使用Filter类使用如下方法返回所需的实体: public IEnumerable GetEntities(Expression<Func> filter) { […]

Expression.Lambda()的参数问题

更新:这确实有效,我是愚蠢的:( 我有以下扩展方法 public static string ExtMethod(this object self, object myparameter); 在运行时,这可以通过多种方式调用,我认为这些都是可能的: Expression<Func> expr = x => x.property.ExtMethod(5); Expression<Func> expr = x => x.property.ExtMethod(new object()); Expression<Func> expr = x => x.property.ExtMethod(someMethod()); Expression<Func> expr = x => x.property.ExtMethod(x.someMethod()); Expression<Func> expr = x => x.property.ExtMethod(x.OtherProperty); 我需要做的是评估“ myparameter ”,给出“ expr ”和“ T ” 因为在myparameter使用x的两种情况,我认为我需要创建一个表单的委托: Expression<Func> expr = x => […]

从Object创建Dynamic Func

我有一个标准对象,其中我将每个属性转换为func,如果它的值不为null。 public class TestClassCriteria { public bool? ColumnA { get; set; } public bool? ColumnB { get; set; } } 这是我到目前为止所做的,但我很确定我没有正确定义lambda。 这就是我想要实现的目标。 funcs.Add(x => x.ColumnA == criteria.ColumnA) 。 var properties = criteria.GetType().GetProperties(); var funcs = new List<Func>(); foreach (var property in properties) { var propertyName = property.Name; funcs.Add(x => x.GetType().GetProperty(propertyName).Name == criteria.GetType().GetProperty(propertyName).Name); } 它没有崩溃或导致任何错误,它只是不起作用。 您将提供的任何帮助将不胜感激。

C#lambda有条件地获得不同的值列表

我有一个用户列表如下: List users = new List(); users.Add(new User(){ UserId = “11”, City = “London” }); users.Add(new User(){ UserId = “12”, City = “London” }); users.Add(new User(){ UserId = “12”, City = “London” }); users.Add(new User(){ UserId = “11”, City = “Newyork” }); users.Add(new User(){ UserId = “14”, City = “Virginia” }); 在这里,我希望获得具有不同City by C# lambda […]

如何将Lambda表达式转换为Sql?

我正在开发一个小框架来访问数据库。 我想添加一个使用lambda表达式进行查询的function。 我该怎么做呢? public class TestModel { public int Id {get;set;} public string Name {get;set;} } public class Repository { // do something. } 例如: var repo = new Repository(); var query = repo.AsQueryable().Where(x => x.Name == “test”); // This query must be like this: // SELECT * FROM testmodel WHERE name = ‘test’ var […]

用lambda表达式参数调用generics方法的reflection

我正在寻找一种方法来调用带有lambda表达式的generics方法,该表达式在一个项目数组中调用Contains。 在这种情况下,我正在使用Entity Framework Where方法,但该方案可以应用于其他IEnumerables。 我需要通过Reflection调用上面代码的最后一行,所以我可以使用任何类型和任何属性传递给Contains方法。 var context = new TestEntities(); var items = new[] {100, 200, 400, 777}; //IN list (will be tested through Contains) var type = typeof(MyType); context.Set(type).Where(e => items.Contains(e.Id)); //**What is equivalent to this line using Reflection?** 在研究中,我注意到我应该使用GetMethod,MakeGenericType和Expression来实现这一点,但我无法弄清楚如何去做。 有这个样本非常有帮助,所以我可以理解Reflection如何与Lambda和Generic概念一起工作。 基本上,目标是编写一个正确版本的函数,如下所示: //Return all items from a IEnumerable(target) that has at least one matching […]