相关疑难解决方法(0)

在LINQ Lambda表达式中使用GroupBy,Count和Sum

我有一系列具有属性重量,体积和所有者的盒子.

我想使用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表达式执行此操作吗?

linq lambda group-by sum count

75
推荐指数
3
解决办法
15万
查看次数

"ID"的.NET命名约定(任何标识:大写)

我正在统一这些不一致的命名约定,这个问题最近让我发疯了.

在我正在使用的代码库中没有关于"ID"的约定; "ID","Id"甚至"iD"使用不一致.

****问题**:在.NET中,你们如何将"ID"大写?例如,nodeID,nodeId?FolderID或FolderId?

****编辑**:复数案件怎么样?那么我应该做"NodeIDs"还是"NodeIds"?

谢谢

.net naming-conventions

31
推荐指数
5
解决办法
8320
查看次数

C#根据某个属性的值将列表拆分为子列表?

我有一个事件列表,每个事件都有一个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)

c# list

21
推荐指数
2
解决办法
3万
查看次数

我可以使用LINQ检查列表中的对象是否具有唯一ID吗?

说我有一个包含这样的对象的列表:

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可以实现的吗?

c# linq list object

6
推荐指数
2
解决办法
2724
查看次数

Entity Framework Core 3.1 中的 LINQ group by

我有一个数据库表来连接用户和客户端之间的数据。

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 在数据库服务器上执行此查询有限制。所以我需要先获取数据并在我的 …

c# entity-framework-core .net-core asp.net-core ef-core-3.1

6
推荐指数
1
解决办法
1万
查看次数

将LINQ查询转换为Dictionary <string,string []>

我有一个返回以下格式的查询:

{ "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做什么?

.net c# linq string dictionary

5
推荐指数
1
解决办法
813
查看次数

由于默认值约束,代码优先迁移失败

在更改实体上的属性类型时出现问题,创建了默认约束,但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无处不在.

思考?

c# entity-framework ef-code-first ef-migrations

5
推荐指数
2
解决办法
3249
查看次数

Linq Group结果为Object

概观

当我上课时

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)

c# linq

4
推荐指数
1
解决办法
71
查看次数

尝试使用linq来转移数据

我有以下类结构:

 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)

c# linq custom-lists

3
推荐指数
1
解决办法
1万
查看次数

Foreach,而值与先前值相同

我发现很难解释这个问题,但我认为这是我们很多人遇到的常见问题.

假设我有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# linq

3
推荐指数
1
解决办法
164
查看次数