Tag: linq

linq加入和统计

我是Linq的新手,想知道如何获取客户ID列表以及他们的交易计数 public class Transaction { public int TransactionId {get; set;} public int CustomerId {get; set;} } public class Customer { public int ID {get; set;} public string Name {get; set;} public string Surname {get; set;} } 我想我需要通过交易加入客户,但不太确定如何计算。 var query = (from c in customers join t in transactions on c.ID equals t.CustomerId

“String.Contains方法仅支持可在客户端上评估的参数”

public static void MyFunction(MyErrorClass err) { var query = from filter in DataContext.ErrorFilters select filter; query = query.Where(f => err.ErrorMessage.Contains(f.ErrorMessage)); List filters = query.ToList(); //…more code } 所以我对上面的代码有一些问题,我从query.ToList()行的主题行中得到错误。 这是我正在尝试做的事情: 首先,我有一个自定义错误类MyErrorClass 。 每当我的网站上发生错误时,我MyErrorClass从exception中创建一个MyErrorClass对象,将exception中的所有数据存储在该对象中,并将信息存储在数据库中。 我要跟踪的exception属性之一是错误消息( ErrorMessage )。 我在数据库中设置了一个ErrorFilters表,用户可以根据ErrorMessage过滤错误。 所以说你得到了大量的错误,说“System.Data.SqlClient.SqlException:Timeout expired。在操作完成之前已经过了超时时间,或者服务器没有响应。”,你想忽略它们。 您只需使用ErrorMessage将filter添加到数据库为“超时过期”,并将其设置为忽略。 现在,我上面的类设置为出错,并决定是否应该过滤错误。 我正在尝试获取具有与错误匹配的ErrorMessage的所有filter的列表。 我确定这是一个简单的解决方案,我只是不知道如何解决它。

使用LINQ更新字符串数组

我正在尝试使用LINQ创建一个使用新版本字符串更新AssemblyInfo文件的方法。 我可以成功提取我需要更新的字符串,但不知道如何更新集合中的项目。 我是LINQ的新手,所以任何建议都表示赞赏! private void UpdateVersion(string file, string version) { string[] asmInfo = File.ReadAllLines(file); var line = asmInfo.Single(x => x.Trim().StartsWith(“[assembly: AssemblyVersion”)); line = “[assembly: AssemblyVersion\”” + version + “\”)]”; // This doesn’t work – it’s writing the original file back File.WriteAllLines(file, asmInfo); }

将这个foreach产量重写为linq产量?

假设我有以下代码(上下文缩小以保持问题范围有限) public static IEnumerable GetThemColors(){ var ids = GetThePrimaryIds(); foreach (int id in ids){ yield return GetColorById(id); } ids = GetTheOtherIds(); foreach (int id in ids){ yield return GetOtherColorsById(id); } } 我想把它们改写成这样的东西(当然不会编译 public static IEnumerable GetThemColors(){ GetThePrimaryIds().Select(id=>yield return GetColorById(id)); GetTheOtherIds().Select(id=>yield return GetOtherColorsById(id)); } 关键点在于,在我的第一个片段中,我有两个foreach枚举器屈服,我不知道如何在linq中做什么而不会丢失我的延迟加载function。

为什么在第二种情况下不执行简单的linq命令?

我的代码中有以下行。 var dates = query.Select(x => EntityFunctions.DiffDays(query.Min(y => y.Date), x.Date)); 但是我认为命令query.Min(y => y.Date)是为每个x执行的。 所以我想做以下事情 System.DateTime varMinDate = query.Min(y => y.Date); var dates = query.Select(x => EntityFunctions.DiffDays(varMinDate, x.Date)) 我模型中字段Date的类型是System.DateTime. 但是,如果我以第二种方式更改它,我会得到一个例外 An exception of type ‘System.NotSupportedException’ occurred in System.Data.Entity.dll but was not handled in user code 编辑 上面提到的查询如下 var query = (from b in db.StudentProgressPerDay where b.Student.Equals(InputStudent) […]

循环通过LINQ查询列(不是行)

是否有可能,如果是这样,循环LINQ查询的结果? 像这样的东西: var results= from a in dt.AsEnumerable() where a.Field(“id”) == i select new { id= a.Field(“id”), a= a.Field(“a”), b = a.Field(“b”) }; IEnumerable colNames = results.First().GetType().GetProperties() .Select(p => p.Name); string[] columns = colNames.ToArray(); int i = 0; foreach (var row in results) { for (int i = 0; i < columns.Count(); i++) { string […]

如何处理Linq表达式中的IDisposableobject创建?

Linq允许您在查询表达式中创建新对象。 当您拥有封装列表生成的类时,这非常有用。 我想知道你是如何处理创建需要它的对象的? 例: class Generator { public IEnumerable Gen(int size) { return Enumerable.Range(0, size); } } class bar { public void doit() { var foo = from r in Enumerable.Range(1, 3) from g in new Generator().Gen(r) select g; } } 这将创建3个Generator对象,这些对象将在某个时刻被垃圾收集。 如果Generator是IDisposable,我将如何获得Dispose()调用?

将XML用作小型C#应用程序的数据持久性会有什么好处?

我需要一些关于将XML用作小型C#应用程序的数据持久性的好方法。 这是一个独立的应用程序,用户不共享相同的数据持久性,因此,文件访问是独占的。 这就是我首先想到XML的原因。 我知道我的设计模式,所以如果我编写通常的图层,我可以隔离持久性,然后在需要时更改它。 然后,它是一个小应用程序,所以我需要快速写它。 我应该只使用Linq XML并克服它吗? 如果是这样,如果我决定用嵌入式数据库替换XML,那么我的重写工作会是什么? Linq在写入XML文件时的表现如何? 但如果我不跟Linq一起去,你们会建议什么? 更新 通过我得到的评论,我可能需要指定一点。 这是一个供教师使用的成绩单应用程序。 这些是我的主要实体: 学生 课程 老师(应该只有一个,但我会因为未来的整合可能性而存储它) 成绩(学生每门课程可以有一个以上的成绩) 现在有些问题: 在幕后,我应该每个实体有一个XML文件吗? 在幕后,我应该使用Linq到XML吗? 还有什么东西可以考虑吗? 还有一些评论 我理解我应该在输入和输出上使用IEnumerable与“持久化类实例”进行交互。 这给了我灵活性。 虽然我对建议很开放,但我真的不想考虑立即嵌入数据库。 这个小应用程序是一个令人兴奋的机会,可以开始工作并在生产中尝试新事物(不仅仅是测试)而且风险很小。

使用SQL LIKE运算符的LINQ to Entities

我有这个: query = query.Where(s => s.ShowTypeDescription == showTypeDescription); 为了构建动态SQL,为了不同的变量多次。 我将如何改变以上内容来说: query = query.Where(s => s.ShowTypeDescription **LIKE** showTypeDescription); ?

linq查询结果中的格式日期

以下linq to entities查询给出以下结果: public class UserCountResult { public DateTime? date { get; set; } // **should this be string instead?** public int users { get; set; } public int visits { get; set; } } public JsonResult getActiveUserCount2(string from = “”, string to = “”) { var query = from s in db.UserActions group s […]