【问题标题】:How can I compare a value from List<string> to Project.Models.Class?如何将 List<string> 中的值与 Project.Models.Class 进行比较?
【发布时间】:2020-11-23 05:47:45
【问题描述】:

我想通过使用 linq 从 Project.Models.transaction_details 中检索数据,比较字符串列表 (List) 中的值。

这是我的代码

List<transaction_details> transactions = new List<transaction_details>();
List<string> date_list = new List<string>();
// date_list  output is ["2020-01-01","2020-01-02",2020-01-03",...,"2020-01-31"]

         while (sdr.Read())
                {
                    transactions.Add(new transaction_details
                    {
                            ID = sdr.GetInt32("ID"),
                            Transdate = sdr.GetDateTime("Transdate"),
                            Debit = sdr.GetDecimal("Debit"),
                            TransactionName =sdr.GetString("TransactionName"),
                            BranchID = sdr.GetString("BranchID")
                    });
                }
 var array1Index = date_list.Select((i, index) => new { Index = index, i = i }).ToList();
 List<transaction_details> arrayresult = new List<transaction_details>();



                var query1 = from a in array1Index
                             select transactions.Contains(a.i) == true ? a.i : "";

                arrayresult = query1.ToList();
                arrayresult.ForEach(x => {
                    Console.Write(x + " ");
                });

我的问题是 (a.i) 是一个错误。 无法将“字符串”转换为“Project.Models.transaction_details”。

【问题讨论】:

  • 错误指向哪一行?
  • @Minasploit select transactions.Contains(a.i) == true ? a.i : "";
  • @Minasploit 我想比较事务。转换为 date_list 值。
  • 在这一行中,transactions.Contains(a.i) 您将交易与 a.i. 进行比较。 var a.i 是一个字符串,因此错误提示您正在尝试将事务与字符串进行比较
  • @Minasploit 是的。如何解决?

标签: c# sql linq model-view-controller


【解决方案1】:

您可能是想查看交易日期。试试这个:

var query1 = from a in array1Index
    select transactions.Any(t => t.Transdate == a.i) == true ? a.i : "";

编辑: 如果您想要交易列表,请尝试以下操作:

var query1 = from t in transactions
             where array1Index.Any(a => a.i == t.Transdate)
             select t;

【讨论】:

  • var query1 = from a in array1Index select transactions.Any(t => t.Transdate == a.i) ? a.i:“”; // 我想这也可以工作
  • 是的,它会的。我刚刚从问题中复制了代码
  • arrayresult = query1.ToList();无法将 System.Collections.Generic.List 转换为 System.Collections.Generic.List。:错误
  • 查看我的编辑。您是否要获取特定日期所有交易的列表?
  • 查询正文必须以 select 子句或 group 子句结尾。
【解决方案2】:
var query1 = from t in transactions
         where array1Index.Any(a => a.i == t.Transdate);

试试这个

【讨论】:

  • 查询正文必须以 select 子句或 group 子句结尾。
  • var query1 = from a in array1Index select transactions.Any(t => t.Transdate == a.i);
  • var query1 = from a in array1Index select transactions.Any(t => t.Transdate.ToString() == a.i);
  • arrayresult = query1.ToList();无法将 System.Collections.Generic.List 转换为 System.Collections.Generic.List。:错误
猜你喜欢
  • 1970-01-01
  • 2020-09-28
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
相关资源
最近更新 更多