Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以在LINQ中创建三种不同的条件并产生三种不同的结果?_C#_Linq - Fatal编程技术网

C# 是否可以在LINQ中创建三种不同的条件并产生三种不同的结果?

C# 是否可以在LINQ中创建三种不同的条件并产生三种不同的结果?,c#,linq,C#,Linq,下面是我的Lambda LINQ。 return await _trialBalanceContext .Entries .Select(x => new { accountTitle = x.AccountTitle, debitAmount = x.DebitAmount, creditAmount = x.CreditAmount, }) .ToListAsync(); if (accountT

下面是我的Lambda LINQ。

return await _trialBalanceContext
    .Entries
    .Select(x => new
    {
        accountTitle = x.AccountTitle,
        debitAmount = x.DebitAmount,
        creditAmount = x.CreditAmount,
    })
    .ToListAsync();
if (accountTitle == "Asset"){
    debitAmount = debitAmount * 100
    creditAmount = creditAmount * 100
 } else if (accountTitle == "Expense"){
    debitAmount = debitAmount - creditAmount
    creditAmount = creditAmount * debitAmount
 } else 
 {
    debitAmount = creditAmount + 30
    creditAmount = debitAmount + 50
 }
我想在上面的LINQ中应用以下条件。

return await _trialBalanceContext
    .Entries
    .Select(x => new
    {
        accountTitle = x.AccountTitle,
        debitAmount = x.DebitAmount,
        creditAmount = x.CreditAmount,
    })
    .ToListAsync();
if (accountTitle == "Asset"){
    debitAmount = debitAmount * 100
    creditAmount = creditAmount * 100
 } else if (accountTitle == "Expense"){
    debitAmount = debitAmount - creditAmount
    creditAmount = creditAmount * debitAmount
 } else 
 {
    debitAmount = creditAmount + 30
    creditAmount = debitAmount + 50
 }
您可以这样做:

return await _trialBalanceContext
    .Entries
    .Select(x => new
    {
        accountTitle = x.AccountTitle,
        debitAmount = (x.AccountTitle == "Asset") ? x.DebitAmount*100 : ((x.AccountTitle == "Expense") ? x.DebitAmount - x.CreditAmount : x.CreditAmount + 30),
        creditAmount = (x.AccountTitle == "Asset") ? x.CreditAmount*100 : ((x.AccountTitle == "Expense") ? x.CreditAmount * x.DebitAmount : x.DebitAmount + 50),
    })
    .ToListAsync();
您可以这样做:

return await _trialBalanceContext
    .Entries
    .Select(x => new
    {
        accountTitle = x.AccountTitle,
        debitAmount = (x.AccountTitle == "Asset") ? x.DebitAmount*100 : ((x.AccountTitle == "Expense") ? x.DebitAmount - x.CreditAmount : x.CreditAmount + 30),
        creditAmount = (x.AccountTitle == "Asset") ? x.CreditAmount*100 : ((x.AccountTitle == "Expense") ? x.CreditAmount * x.DebitAmount : x.DebitAmount + 50),
    })
    .ToListAsync();

您的问题不清楚。
creditAmount=creditAmount*debitAmount
debitAmount指的是原始值还是紧靠前一行指定的值?原始值。谢谢你的回复!您的问题不清楚。
creditAmount=creditAmount*debitAmount
debitAmount指的是原始值还是紧靠前一行指定的值?原始值。谢谢你的回复!这很接近,但不会编译,因为在设置
debitAmount
creditAmount
时无法引用
accountTitle
。有没有办法引用我的accountTitle?@AhcmadAngagao您的意思是将标题作为变量传递?这很接近,但不会编译,因为设置
debitAmount
creditAmount
时不能引用
accountTitle
。有没有办法引用我的accountTitle?@AhcmadAngagao您的意思是将标题作为变量传递?