我有一系列具有属性重量,体积和所有者的盒子.
我想使用LINQ获取盒子信息的汇总列表(按所有者)
例如
**Owner, Boxes, Total Weight, Total Volume**
Jim, 5, 1430.00, 3.65
George, 2, 37.50, 1.22
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何使用Lambda表达式执行此操作吗?
我正在统一这些不一致的命名约定,这个问题最近让我发疯了.
在我正在使用的代码库中没有关于"ID"的约定; "ID","Id"甚至"iD"使用不一致.
****问题**:在.NET中,你们如何将"ID"大写?例如,nodeID,nodeId?FolderID或FolderId?
****编辑**:复数案件怎么样?那么我应该做"NodeIDs"还是"NodeIds"?
谢谢
我有一个事件列表,每个事件都有一个datetime属性.我需要按年将列表拆分为子列表.诀窍是,我的事件列表是从数据库中提取的,可能会发生变化,所以我不能只对这些年份进行硬编码并将事件排序到正确的年份.有没有办法可以将我的主要事件列表拆分为子列表,以便在每个子列表中,每个事件都在同一年?所以我最终会得到所有2010年活动的子列表,所有2011年活动的子列表,等等.
我的列表是这样创建的:
foreach (var ev in eventResults)
{
eventsList.Add(new Event()
{
Name = ev.Title,
Month = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(ev.StartDate.Month),
Day = ev.StartDate.Day,
Year = ev.StartDate.Year
});
}
Run Code Online (Sandbox Code Playgroud) 说我有一个包含这样的对象的列表:
public class Person
{
private string _name;
private string _id;
private int _age;
public Person
{
}
// Accessors
}
public class ManipulatePerson
{
Person person = new Person();
List<Person> personList = new List<Person>;
// Assign values
private void PopulateList();
{
// Loop
personList.Add(person);
// Check if every Person has a unique ID
}
}
Run Code Online (Sandbox Code Playgroud)
我想检查每个人都有一个唯一的ID.我想返回一个布尔值true/false,具体取决于ID是否唯一.这是我用LINQ可以实现的吗?
我有一个数据库表来连接用户和客户端之间的数据。
db: class UserClientCorporate{
int UserId;
User User;
int ClientCorporateId;
ClientCorporate ClientCorporate;
}
Run Code Online (Sandbox Code Playgroud)
我想查询以获取ClientCorporates分组的列表userid。我在 LINQ 中遵循了诸如Group by 之类的 Stack Overflow 上的一些示例
这是我的查询:
var data3 = from db in _context.UserClientCorporate
group db.ClientCorporateId by db.UserId into g
select new { UserId = g.Key, Clients = g.ToList() };
return Ok(await data3.ToListAsync());
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到了错误:
失败:Microsoft.AspNetCore.Server.Kestrel[13] 连接 ID“0HLT67LJQA4IP”,请求 ID“0HLT67LJQA4IP:0000000F”:应用程序引发了未处理的异常。System.InvalidOperationException: 无法翻译 LINQ 表达式“ToList(GroupByShaperExpression: KeySelector: u.UserId, ElementSelector:ProjectionBindingExpression: EmptyProjectionMember)”。以可翻译的形式重写查询,或通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用显式切换到客户端评估。有关详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=2101038。
如何解决这个问题呢?
解决了 !在我做了更多研究之后,似乎 EF Core 在数据库服务器上执行此查询有限制。所以我需要先获取数据并在我的 …
我有一个返回以下格式的查询:
{ "tesla", "model s" }
{ "tesla", "roadster" }
{ "honda", "civic" }
{ "honda", "accord" }
Run Code Online (Sandbox Code Playgroud)
我想把它转换成类似的字典<string, string[]>:
{ "tesla" : ["model s", "roadster"], "honda" : ["civic", "accord"] }
Run Code Online (Sandbox Code Playgroud)
我试过这个:
var result = query.Select(q => new { q.Manufacturer, q.Car}).Distinct().ToDictionary(q => q.Manufacturer.ToString(), q => q.Car.ToArray());
Run Code Online (Sandbox Code Playgroud)
但到目前为止我没有运气.我觉得这是做什么的实际上是试图添加像个别项目"tesla" : ["model s"]和"tesla" : ["roadster"],这就是为什么它的失败......任何简单的方法来完成我想在LINQ做什么?
在更改实体上的属性类型时出现问题,创建了默认约束,但EF在更改列时未删除它,因此,update-database失败.
该实体以前具有DateTime属性.
public DateTime ImportDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
它的迁移包含了它的Up()方法
AddColumn("dbo.Table", "ImportDate", c => c.DateTime(nullable: false));
Run Code Online (Sandbox Code Playgroud)
但是,它还创建了默认约束
ALTER TABLE [dbo].[Table] ADD DEFAULT ('1900-01-01T00:00:00.000') FOR [ImportDate]
Run Code Online (Sandbox Code Playgroud)
ImportDate正在更改为DateTimeOffset
public DateTimeOffset ImportDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
由此产生的迁移有一个AlterColumn
AlterColumn("dbo.Table", "ImportDate", c => c.DateTimeOffset(nullable: false, precision: 7));
Run Code Online (Sandbox Code Playgroud)
但是,这会失败,因为存在默认约束.
我能想到的唯一方法是使用Sql(...)DROP CONSTRAINT,但是,CONSTRAINT有一个看似随机的名称,DF__Table__Import__5441852A因此硬编码的SQL无处不在.
思考?
概观
当我上课时
public class RequestEntry
{
public int RequestId
{
get;
set;
}
public string ApproverUserId
{
get;
set;
}
public string ApproverUserName
{
get;
set;
}
public DateTime RequestedDate
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
它包含在列表中:
List<RequestEntry> RequestEntries = new List<RequestEntry>()
{
new RequestEntry{RequestId = 1, RequestedDate = new DateTime(2018,06,01), ApproverUserId = "STEVES", ApproverUserName = "Steve Smith"},
new RequestEntry{RequestId = 1, RequestedDate = new DateTime(2018,06,01), ApproverUserId = "GRAHAMS", ApproverUserName = "Graham Smith" },
new RequestEntry{RequestId = 2, RequestedDate = new …Run Code Online (Sandbox Code Playgroud) 我有以下类结构:
public class TaskLog
{
public DateTime LogDate { get; set; }
public string Robot { get; set; }
public string Task { get; set; }
public Enums.ProbeDataState State { get; set; }
public TaskLog()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个通用列表如下:
List<TaskLog> Logs;
Run Code Online (Sandbox Code Playgroud)
我的输出:
Robot Date State
---------------------------------------------
aaa 8/5/2013 12:00:00 AM Task:1=fileDeltaFailed
aaa 8/5/2013 12:00:00 AM Task:2=fileDeltaFailed
aaa 8/5/2013 12:00:00 AM Task:4=fileDeltaFailed
bbb 8/5/2013 12:00:00 AM Task:1=fileDeltaFailed
bbb 8/5/2013 12:00:00 AM Task:2=fileDeltaFailed
bbb 8/5/2013 12:00:00 AM Task:4=fileDeltaFailed
Run Code Online (Sandbox Code Playgroud)
但是,我想将任务分组并说明如下:
Tasks
Robot Date …Run Code Online (Sandbox Code Playgroud) 我发现很难解释这个问题,但我认为这是我们很多人遇到的常见问题.
假设我有List<string, string>以下格式:
1, value-
1, and value-
1, again value-
2, another value-
2, yet another value-
Run Code Online (Sandbox Code Playgroud)
我想把它转换成List<string>只包含2个项目
value-and value-again value-
another value-yet another value
Run Code Online (Sandbox Code Playgroud)
这是基于数字(1或2).
我通常使用的代码有效,但似乎有些繁琐.
是否有更简洁的方式,可能与Linq?
一个快速的控制台应用程序,以演示我正在尝试做什么,希望解释它比我的问题更好!
class Program
{
static void Main(string[] args)
{
List<Tuple<string, string>> myTuple = new List<Tuple<string, string>>();
myTuple.Add(new Tuple<string, string>("1", "value-"));
myTuple.Add(new Tuple<string, string>("1", "and value-"));
myTuple.Add(new Tuple<string, string>("1", "again value-"));
myTuple.Add(new Tuple<string, string>("2", "another value-"));
myTuple.Add(new Tuple<string, string>("2", "yet another value"));
string previousValue = "";
string concatString …Run Code Online (Sandbox Code Playgroud) c# ×8
linq ×6
.net ×2
list ×2
.net-core ×1
asp.net-core ×1
count ×1
custom-lists ×1
dictionary ×1
ef-core-3.1 ×1
group-by ×1
lambda ×1
object ×1
string ×1
sum ×1