Tag: linq

为什么linq-2-sql会创建额外的不必要对象?

我在数据库中有一个简单的Parent Child表 CREATE TABLE [Parent]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](256) NOT NULL) ALTER TABLE [Parent] ADD CONSTRAINT [PK_Parent_Id] PRIMARY KEY ([Id]) CREATE TABLE [Child]( [Id] [int] IDENTITY(1,1) NOT NULL, [ParentId] [int] NOT NULL, [Name] [nvarchar](256) NOT NULL) ALTER TABLE [Child] ADD CONSTRAINT [PK_Child_Id] PRIMARY KEY ([Id]) ALTER TABLE [Child] ADD CONSTRAINT [FK_Child_Parent_ID] FOREIGN […]

EntitySet转换的通用列表

如何将System.Collections.Generic.List转换为System.Data.Linq.EntitySet ?

无法从使用中推断出SelectMany

我尝试编译代码时收到以下错误: 无法从用法中推断出方法’System.Linq.Enumerable.SelectMany(System.Collections.Generic.IEnumerable,System.Func>)’的类型参数。 尝试显式指定类型参数。 List entries = … List arguments = … var argumentsVal = entries.SelectMany((RowEntry entry) => (IEnumerable)arguments.SelectMany((RowArgument arg) => new RowArgumentVal() { Action = “X” , EntryID = entry.ID , ArgID = arg.ID , Val_BIT = true , Val_DATE = new DateTime(2014, 01, 04) , Val_DATETIME = new DateTime(2014, 01, 04) , Val_DECIMAL = […]

何时使用LINQ的.ToList()或.ToArray()

运行此代码后: var input = new List( … ); var result = input.Select( t => new U(t) ); U first1 = null; foreach ( U u1 in result ) if ( first1 == null ) first1 = u1; U first2 = null; foreach ( U u2 in result ) if ( first2 == null ) first2 […]

EF Core嵌套Linq在N + 1个SQL查询中选择结果

我有一个数据模型,其中’Top’对象有0到N’Sub’对象。 在SQL中,这是通过外键dbo.Sub.TopId 。 var query = context.Top //.Include(t => t.Sub) Doesn’t seem to do anything .Select(t => new { prop1 = t.C1, prop2 = t.Sub.Select(s => new { prop21 = s.C3 //C3 is a column in the table ‘Sub’ }) //.ToArray() results in N + 1 queries }); var res = query.ToArray(); 在Entity Framework 6(延迟加载关闭)中,此Linq查询将转换为单个 […]

是否可以使用ParameterExpression?

我想用out参数定义Lambda表达式。 有可能吗? 以下是我尝试过的C#.Net 4.0控制台应用程序的代码片段。 正如您在Procedure25中看到的,我可以使用lambda表达式来定义具有输出参数的委托,但是,当我想使用linq表达式执行相同操作时,过程24中的代码将失败: System.ArgumentException未处理Message = ParameterExpression类型’System.Boolean’不能用于’System.Boolean&’Source = System.Core类型的委托参数 我知道我可以使用带有bool成员的输入类对象并将值传递给调用者,但我很好奇我是否可以以某种方式定义参数。 谢谢 static void Main(string[] args) { Procedure25(); Procedure24(); Console.WriteLine(“Done!”); Console.ReadKey(); } private delegate int Evaluate(string value, out bool usesVars); private static void Procedure24() { // This fails to compile: //Expression x = (string val, out bool usesSimVals) => //{ // usesSimVals = true; // […]

linq中的简单选择查询

假设我有一张学生桌,我想要显示ID为1的学生。 SELECT * FROM STUDENT ST WHERE ST.ID = 1 这就是我在Linq中实现这一点的方式。 StudentQuery = from r in oStudentDataTable.AsEnumerable() where (r.Field(“ID”) == 1) select r; oStudentDataTable = StudentQuery.CopyToDataTable(); 但是,如果我想向学生展示这些ID 1,2,3,4,5 .. SELECT * FROM STUDENT ST WHERE ST.ID IN (1,2,3,4,5) 我怎样才能在Linq中实现这一目标?

C# – 如何将’out’参数传递给lambda表达式

我有一个带有以下签名的方法: private PropertyInfo getPropertyForDBField(string dbField, out string prettyName) 在其中,我根据给定的dbField找到关联值dbField 。 然后我想找到名称为prettyName所有属性(如果有的prettyName ,所以我试图执行以下操作: IEnumerable matchingProperties = getLocalProperties().Where(prop => prop.Name.Equals(prettyName) ); 但是,这会产生以下错误: 不能在匿名方法,lambda表达式或查询表达式中使用ref或out参数’prettyName’ 在我试图在Where lambda参数中使用prettyName的方法中, prettyName肯定是初始化的。 如果prettyName无法初始化为有效值,则return 。 我可以在这里做一些技巧让我在lambda表达式中使用prettyName吗? 编辑:如果重要的话,我正在使用.NET 3.5。

如何使用Linq查询Azure存储表?

我不知道到底在哪里,但我对此有错误的想法。 我试图在第一个实例中使用linq查询azure存储表。 但我无法弄清楚它是如何完成的。 从各种来源看我有以下几点: List blogs = new List(); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(“BlogConnectionString”)); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable blogTable = tableClient.GetTableReference(“BlogEntries”); try { TableServiceContext tableServiceContext = tableClient.GetTableServiceContext(); TableServiceQuery query = (from blog in blogTable.CreateQuery() select blog).AsTableServiceQuery(tableServiceContext); foreach (BlogEntry blog in query) { blogs.Add(new BlogViewModel { Body = blog.Body }); } } catch { } 在我搞砸之前,我可能已经把它靠近了。 […]

无法通过连接编译c#linq查询

下面是一些c#代码的示例,我在执行一些linq连接时无法编译。 有谁知道为什么这不编译? 错误是 无法从查询中推断出类型参数 (在我的实际代码中, Fetch()返回一个IQueryable ) using System.Collections.Generic; using System.Linq; namespace LinqJoin { public class DataRepository { public IList Fetch() { return new List(); } } internal class SSOUser { public int Id { get; set; } } internal class UserRole { public int SSOUserId { get; set; } public int RoleId { get; […]