C# 将 linq 列表 (int) 项更改为 (string)

标签 c# .net linq list loops

我的任务是修复其他人(有人离开了公司)制作的 C# 应用程序中的一些问题,但我并不是真正合格的 C# 程序员,这只是一种爱好,所以我对以下内容有点困惑。

var JobQuery = (from datavalue in dc.JobInformations
    where datavalue.JobOpen != 20
    select new
    {
    datavalue.JobID,
    datavalue.CompanyName,
    datavalue.Contact,
    datavalue.Date,
    datavalue.HireOrSale,
    datavalue.JobOpen,
    datavalue.Notes
    }
    );

var JobList = JobQuery.ToList();

无论如何,我需要获取列表并循环遍历它,我可以使用这样的方法来完成:

foreach (var item in JobList){
    if (item.HireOrSale = 1)    {
        item.HireOrSale = "Sale";
    }   
    yield return item;
}

如您所见,我正在尝试做的是将存储为 INT 的 Hire 或 Sale 更改为字符串,以便在前端更好地读取,我无法将字符串转换为 int,这正是我得到的地方卡住。有没有一种方法可以说在循环中构建另一个列表,以允许我为每个列表定义数据类型以防其不同?或者有没有办法直接更改项目数据类型?

使用:

            var JobList = (from datavalue in dc.JobInformations
                           where datavalue.JobOpen == 1
                           select new
                           {
                               JobID = datavalue.JobID,
                               CompanyName = datavalue.CompanyName,
                               Contact = datavalue.Contact,
                               Date = datavalue.Date.ToShortDateString(),
                               HireOrSale = datavalue.HireOrSale == 2 ? "Service" :
                               datavalue.HireOrSale == 0 ? "Hire" :
                               datavalue.HireOrSale == 1 ? "Sale" : "",
                               JobOpen = datavalue.JobOpen == 1 ? "Awaiting Quote" :
                               datavalue.JobOpen == 2 ? "Quoted" :
                               datavalue.JobOpen == 3 ? "PO Recieved" :
                               datavalue.JobOpen == 4 ? "Goods On Order" :
                               datavalue.JobOpen == 5 ? "Goods Delivered" :
                               datavalue.JobOpen == 6 ? "Job Complete" :
                               datavalue.JobOpen == 20 ? "Job Cancelled" : "",
                               Notes = datavalue.Notes
                           }
                           );

最佳答案

var JobQuery = (from datavalue in dc.JobInformations
    where datavalue.JobOpen != 20
    select new
    {
       JobID = datavalue.JobID,
       CompanyName = datavalue.CompanyName,
       Contact = datavalue.Contact,
       Date = datavalue.Date,
       HireOrSale = datavalue.HireOrSale==1?"Sale":"",//if not 1, use your default value
       JobOpen = datavalue.JobOpen,
       Notes = datavalue.Notes
    }
    );

var JobList = JobQuery.ToList();

关于C# 将 linq 列表 (int) 项更改为 (string),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20954409/

相关文章:

.net - OpenOffice 和 .NET

c# - 搜索多列 ListView C#

c# - 当字符串包含多个双引号时,从字符串中提取 URL 的正则表达式失败?

c# - 如何创建完全动态的 linq 查询?

c# - 每个方法调用 WCF HTTPS 时都会调用构造函数

c# - 如何在 linq 查询中将可为空的 guid 与 guid 进行比较?

c# - 通过界面投影

c# - 为什么 C# 编译器在将方法组作为参数传递时不解析仅返回类型不同的委托(delegate)类型?

.net - Silverlight 计时器类功能

c# - 是否可以在某个元素之后对 List 进行排序?