Tag: linq

C#Generic传递具有相同属性的不同对象

我不确定我所做的事情是否可行。 我有2种方法。 2种方法的主体完全相同,但参数和返回方法的签名都不同。 传入的参数的属性已更改,对象不同但具有相同的属性名称(它们是两个不同的entity framework实体)。 从基础对象inheritance是不可能的(我认为)因为这些是entity framework实体。 最好展示示例,然后谈谈它.. 方法1 private static IQueryable ApplyMapFilterToListings(IQueryable listings, ListingSearchCriteria criteria, bool boolIsPremiumListingsOnly = false) { //setting properties of listings (of type MapListing Entity) } 方法2 private static IQueryable ApplyFilterToListings(IQueryable listings, ListingSearchCriteria criteria, bool boolIsPremiumListingsOnly = false) { //setting properties of listings (of type vListing Entity) } 一般来说,我不介意函数体是否完全相同,但是在这种情况下,很多属性都是有条件设置的,我想让这些方法完全相同,并且certificate它们不同步。 我还在退回IQueryable 的原因是因为我在返回后做了其他的事情

无法添加具有已在使用的密钥的实体(LINQ)

我收到此错误Cannot add an entity with a key that is already in use. 当我运行下面的代码时。 表: 我错过了什么? private void CopyAllPageObjects(int fromPageID, int toPageID) { CMSDataContext _db = new CMSDataContext(); // Copy page objects var originalPageObjects = (from x in _db.CMSPageObjects where x.PageID == fromPageID select x); List newPageObjects = new List(); foreach (CMSPageObject po in originalPageObjects) { […]

LINQ group by date – 包括空日,不使用join

使用C#,NHibernate,NHibernate到LINQ。 使用NHibernate到LINQ,我没有JOINfunction。 我也不能使用QueryOver。 我有一个LINQ查询,计算潜在客户和销售额。 此表仅在新的销售线索或销售完成时创建,因此有些日子没有插入行。 执行以下查询有效 var query3 = query2.AsEnumerable() .Where(x => x.Created = fromDate.Value) .GroupBy(x => x.Created.Date) .Select(g => new ReferrerChart { Date = g.Key.Date, LeadsCount = g.Count(x => !x.IsSale), SalesCount = g.Count(x => x.IsSale) }); 但有些日期不在那里(日期有0个线索和销售)。 如何包含这些日期并让他们设置LeadsCount = 0和SalesCount = 0而不使用join? 编辑: 最终结果有效: var selectedFromDate = fromDate.Value; var selectedToDate = toDate.Value; var selectedDates […]

如何在使用Directory.GetDirectories时排除文件夹

我想返回’SomeFolder’目录中所有子目录的列表, 不包括 ‘Admin’和’Templates’目录。 我有以下文件夹结构(简化): C:\inetpub\wwwroot\MyWebsite\SomeFolder\RandomString C:\inetpub\wwwroot\MyWebsite\SomeFolder\RandomString C:\inetpub\wwwroot\MyWebsite\SomeFolder\RandomString C:\inetpub\wwwroot\MyWebsite\SomeFolder\Admin C:\inetpub\wwwroot\MyWebsite\SomeFolder\Templates ‘SomeFolder’可以包含不同数量的’RandomString’文件夹(大约从10到100)。 这是我尝试过的: var dirs = Directory.GetDirectories(Server.MapPath(“..”)) .Where(s => !s.EndsWith(“Admin”) || !s.EndsWith(“Templates”)); foreach (string dir in dirs) { lit.Text += Environment.NewLine + dir; } 这将返回完整的文件夹列表(如上所示),而不会过滤掉“管理员”和“模板”。 有趣的是,如果我更改LINQ .Where子句以包含 ,而不是排除 ,“管理”和“模板”它可以工作,这意味着它只返回“管理”和“模板”的路径。 .Where(s => s.EndsWith(“Admin”) || s.EndsWith(“Templates”)); 如果LINQ不是解决方案,有没有办法使用GetDirectories SearchPattern过滤掉目录?

在LINQ中使用DateTime.Add(TimeSpan)

我必须像下面那样运行一个查询。 它实际上更复杂,但重要的部分是: var results = from b in _context.Bookings where b.ScheduleDate.Add(b.StartTime) >= DateTime.UtcNow select b; 但它给出了以下错误: LINQ to Entities无法识别方法’System.DateTime.Add方法(System.TimeSpan)’,并且此方法无法转换为商店表达式。 我该如何解决这个问题? 提前致谢。

C#DynamicLinq where子句与Any()

我想运行动态linq与字符串where子句如下: query = db.Customers.Where(“Categories.Any(Code == ‘Retail’)”); 客户实体具有类别集合 class Customer { public List Categories {get;set;} … } class Category { public Guid Id {get;set;} public string Code {get;set;} } 任何人都可以告诉我有可能做这样的事情吗? PS:我需要where子句是字符串。 where子句将在运行时生成,因此我无法使用Linq查询表达式。 我正在使用Telerik DataAccess。

entity framework列表包含在lambda中

我想使用特定ID查询项目。 例如: var ids = new List { 1, 3, 5 }; var items = context.Items.Where(item => ids.Contains(item.ID)).ToList(); 问题: 这会使用SQL IN运算符生成单个查询吗? 这个代码在性能方面是否可以? 有没有更好的方法呢? 我正在使用Entity Framework 6和Microsoft SQL Server。

Linq插入具有对现有记录的引用的新行的问题

(我相信这和这个问题一样,但那里没有答案,我想我可以在这里更好地表达问题……) 我有两个Linq-to-SQL类, State和County ,其中County有一个FK to State 。 这是一些测试代码: State s = State.GetState(“NY”); // here I do a load of a State class via the Linq DataContext County c = new County(); c.Name = “Rockland”; c.State = s; MyDataContext.GetTable().InsertOnSubmit(c); MyDataContext.SubmitChanges(); // throws an exception 引发的exception是”Violation of PRIMARY KEY constraint ‘PK_State’. Cannot insert duplicate key in object […]

将xmlns属性添加到XML文档中的根元素时,我的linq查询不起作用

我正在尝试更多地使用LINQ-to-XML,所以我自己做了一个简洁的小例子XML文档来尝试。 另外,我尝试(并且成功地)为该文件创建了自己的XML模式,只是为了测试。 XML文档非常简单,几乎看起来像这样: 1 BMW 320i Red 2 VW Golf White […] 现在,如果我从根元素中删除xmlns -attribute,查询此文档就可以了。 当我重新添加它时,查询返回null,什么也没有。 我试图自己找出来,但我还没有找到解决问题的解决办法。 这是C#-bit: XDocument xmlDoc = XDocument.Load(currentDir + “\\Cars.xml”); // XNamespace ns = “{” + currentDir + “\\carSchema.xsd}”; // Tried to query xmlDoc.Descendants(ns+”car”) after reading another post, // but that made no difference var carInfo1 = from car in xmlDoc.Descendants(“car”) select […]

等待单个任务更清楚地从List <Task >中失败,可能使用LINQ?

在我的应用程序中,我有一个List<Task> ,我在Task.Wait[..]上确定它们是否成功完成( Result = true )。 虽然如果在我等待一个Task完成并返回一个假值,我想取消我正在等待的所有其他Task并根据此做一些事情。 我创建了两个“丑陋”的方法来做到这一点 // Create a CancellationToken and List<Task> to work with CancellationToken myCToken = new CancellationToken(); List<Task> myTaskList = new List<Task>(); //– Method 1 — // Wait for one of the Tasks to complete and get its result Boolean finishedTaskResult = myTaskList[Task.WaitAny(myTaskList.ToArray(), myCToken)].Result; // Continue waiting for Tasks to […]