草庐IT

Linq2XSD

全部标签

c# - 使用 SUM 和 ORDER BY 的 Linq 查询

我有一个名为Hit的(C#)类,它有一个ItemID(int)和一个Score(int)属性。为了简短起见,我跳过了其余的细节。现在在我的代码中,我有一个巨大的列表,我需要在上面执行以下选择(进入一个新列表):我需要为每个单独的Hit.ItemID获取所有Hit.Score的总和,按分数排序。所以如果我在原始列表中有以下项目ItemID=3,Score=5ItemID=1,Score=5ItemID=2,Score=5ItemID=3,Score=1ItemID=1,Score=8ItemID=2,Score=10结果列表应包含以下内容:ItemID=2,Score=15ItemID=

c# - 你如何在 LINQ TO SQL 中按多列分组?

如何在LINQTOSQL中按多列分组?db.Table.GroupBy(a=>a.column1.ToString()+a.column2.ToString())看起来很丑,而且性能很差,我什至不知道它是否有效。哪种方法正确? 最佳答案 尝试按匿名类型分组:groupbynew{item.Col1,item.Col2}然后您将能够访问Key.Col1等 关于c#-你如何在LINQTOSQL中按多列分组?,我们在StackOverflow上找到一个类似的问题:

c# - 当数据库中的数据发生更改时,LINQ to SQL 不会更新

我遇到这个问题,在数据库上更新字段(比如表MyTable中的Field3)后,MyTable.Field3(在C#中)仍然返回旧值。我怀疑有一些缓存......?我如何强制它:从数据库读取值?或者更新MyTable类中的值?或者有什么我想念的吗?我是LINQ新手提前谢谢你。 最佳答案 DataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues,entity);如果您想刷新整个实体集,最简单的方法可能是只创建一个新的DataContext并重新查询所有

c# - Linq 中的 ToList 方法

如果我没记错的话,ToList()方法会迭代所提供集合的每个元素并将它们添加到List的新实例并返回此实例。假设一个示例//usinglinqlist=Students.Where(s=>s.Name=="ABC").ToList();//traditionalwayforeach(varstudentinStudents){if(student.Name=="ABC")list.Add(student);}我认为传统方式更快,因为它只循环一次,而上面的Linq为Where方法迭代两次,然后为ToList()方法迭代两次。我现在正在从事的项目广泛使用了列表,我看到有很多这样的ToLis

c# - LINQ Guid toString()

嗨,这看起来应该可行,fromsomethingincollectionofsomestuffselectnewSelectListItem(){Text=something.Name,Value=something.SomeGuid.ToString(),Selected=false};当我尝试这样做时它不起作用给我错误LINQtoEntitiesdoesnotrecognizethemethod'System.StringToString()'method,andthismethodcannotbetranslatedintoastoreexpression.有解决办法吗?

c# - 如何在 NHibernate Linq 查询中执行不区分大小写的字符串?

如何在NHibernateLinq查询中进行不区分大小写的where?例如//notethisonedoesn'tworkiftheentryindatabasehaslowercaseq=>q.Where(entity=>entity.CaseInsensitiveField==DesiredField.Trim().ToUpper()) 最佳答案 试试这个:q=>q.Where(entity=>entity.CaseInsensitiveField.ToUpper()==DesiredField.Trim().ToUpper()

c# - LINQ-to-SQL:返回单个标量值的存储过程?

我正在将LINQ-to-SQL用于查询遗留数据库的应用程序。我需要调用一个存储过程,它选择一个整数值。更改存储过程不是一种选择。设计者用这个签名创建了一个方法:privateISingleResultNextRowNumber([Parameter(DbType="Int")]System.Nullableincrement,[Parameter(DbType="Char(3)")]stringdataset)我希望返回类型是int。我如何使用LINQ-to-SQL执行此操作? 最佳答案 对于标量函数(UDF)而不是SP,这将是微不

c# - 在 LINQ 中列出列

给定一个IEnumerable和行数,我想将其转换为IEnumerable>像这样:输入:RowCount:3List:[1,2,3,4,5,6,7]输出[[1,4,7][2,5][3,6]]编辑我希望这适用于任何IEnumerable,而不依赖于T是Int32。如何使用LINQ执行此操作? 最佳答案 这样做就可以了:varlist=newList{1,"two",3,4,5,6,7};intcount=3;varrows=list.Select((item,index)=>new{Item=item,Index=index}).G

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

运行这段代码后:varinput=newList(...);varresult=input.Select(t=>newU(t));Ufirst1=null;foreach(Uu1inresult)if(first1==null)first1=u1;Ufirst2=null;foreach(Uu2inresult)if(first2==null)first2=u2;然后'first1==first2'评估为false,即使两个U包装相同的T。我还没有测试它,但我认为它可以通过链接.ToList()或.ToList()来评估为true。ToArray()到Select()调用上。在实际代码

c# - Linq:如何从集合中查询项目直到总和达到某个值

给定以下对象:publicclassProduct{stringName{get;}intQuantity{get;}}使用Linq,我将如何查询List直到我得到一笔款项>=给定的数量?换句话说,如果我的列表看起来像NameQuantity-----------------prod15prod26prod77我想查询列表并拉取实例,直到得到总和>=8.在这种情况下,我会得到列表中的前两项。如果我想要总和>=12,我会得到所有三个。我知道我可以编写一个循环来为我做这件事,但我幻想有一些巧妙的单行代码使用Linq来实现同样的事情。谢谢 最佳答案