gpt4 book ai didi

c# - 如果 c# 不工作,则使用测试字符串类型的对象属性

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:20 24 4
gpt4 key购买 nike

我对c# wpf还是很陌生

这似乎很奇怪,我不能这样做。有人可以向我解释这个错误吗,我读到的所有内容都说这应该有效!

我有一个类(称为 OSMI),我通过 WPF 中的 DataGrid 显示,基于 Class 属性 OsmiOverride = "Y"基于我想要汇总的网格的选定项基于类属性 InvValue 的网格列。我获取 Dat\grid.SelectedItems 并将它们放入列表中并发送到我的方法,然后循环测试,但无论我如何执行 String.CompareString.Equals 我无法进入 If 语句。下面是我的方法和类的当前版本(请原谅粗糙的 MessageBox 调试方法)

 public static Nullable<decimal> GetOsmiSubtractions(List<OSMI> dgselecteditems)
///Get efffect of selected items subtracking to OSMI
{
Nullable<decimal> sum = 0;
String Test = @"Y";
foreach (OSMI p in dgselecteditems)
{
MessageBox.Show(p.InvValue.ToString());
MessageBox.Show(p.OsmiOverride);
if (p.OsmiOverride.Equals(Test))
{
sum += p.InvValue;
MessageBox.Show("Inside");
}

}
MessageBox.Show(sum.ToString());
return decimal.Round((decimal)sum, 2);

}

到目前为止我已经尝试过了

if (p.OsmiOverride=="Y")

if (p.OsmiOverride==@"Y")

然后我阅读使用 String.Equals 方法

 String Test = @"Y";
if (p.OsmiOverride.Equals(Test))

但是没有任何效果,有人可以解释一下吗

非常感谢

伊恩

为了完整起见,我在下面上课

(我还认为我应该使用 LINQ 查询来减少循环的需要,因为我可以使用类似的 [here][1] 但我不确定过滤器/where语句)

有点像

Nullable<decimal> total = dgselecteditems.Sum(item => item.InvValue where item.OsmiOverride=="Y" );

为了完整起见,我的类(class)是

using System;
using System.Collections.Generic;
using System.Windows;
using System.ComponentModel;
using System.Collections.ObjectModel;

public partial class OSMI:INotifyPropertyChanged
{
private string osmioverride;
private Nullable<decimal> osmi1;

public Nullable<long> Id { get; set; }
public string StockCode { get; set; }
public string Description { get; set; }
public string Warehouse { get; set; }
public Nullable<decimal> UnitCost { get; set; }
public Nullable<decimal> QtyOnHand { get; set; }
public Nullable<decimal> InvValue { get; set; }
public string OsmiOverride
{
get { return this.osmioverride; }
set
{
if (this.osmioverride != value)
{
this.osmioverride = value;
this.NotifyPropertyChanged("OsmiOverride");
}
}
}

public event PropertyChangedEventHandler PropertyChanged;

public void NotifyPropertyChanged(string propOsmiOverride)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propOsmiOverride));
}

public string NRVOverride { get; set; }
public Nullable<decimal> OSMI1
{
get { return this.osmi1; }
set
{
if (this.osmi1 != value)
{
this.osmi1 = (decimal)value;
this.NotifyPropertyChanged("Osmi1");
}
}
}


}

最佳答案

尝试 string.Compare ... 如果字符串相同则结果为 0

if (string.Compare(p.OsmiOverride, Test, true, StringComparer.InvariantCultureIgnoreCase) == 0)
{
sum += p.InvValue;
MessageBox.Show("Inside");
}

关于c# - 如果 c# 不工作,则使用测试字符串类型的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34786050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com