Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# 检查项目是否为空或表格是否为空';不包含任何匹配的数据_C#_.net_Linq - Fatal编程技术网

C# 检查项目是否为空或表格是否为空';不包含任何匹配的数据

C# 检查项目是否为空或表格是否为空';不包含任何匹配的数据,c#,.net,linq,C#,.net,Linq,我得到了这个查询,我试图检查表TruckItems中是否有与变量tareTotal中的字符串值匹配的项 public QuoteResult GetTruckInformation(QuoteData data) { QuoteResult qr = null; using (TruckDb db = new TruckDb()) { var tareTotal = db.ChassisModel.Where(x => x.Id == data.C

我得到了这个查询,我试图检查表
TruckItems
中是否有与变量
tareTotal
中的字符串值匹配的项

public QuoteResult GetTruckInformation(QuoteData data)
{
    QuoteResult qr = null;

    using (TruckDb db = new TruckDb())
    {
        var tareTotal = db.ChassisModel.Where(x => x.Id == data.ChassisId).FirstOrDefault();

        var items = (from x in db.TruckItems where x.Model == tareTotal.Name select x); //Issue lies here

        if (items.Any()) //Error here
        {
            var truckTareTotal = db.TruckItems.Where(x => x.Model == tareTotal.Name).FirstOrDefault().TareTotal;
            var truckGVM = db.TruckItems.Where(x => x.Model == tareTotal.Name).FirstOrDefault().GVM;

            var list = new QuoteResult
            {
                TareTotal = Convert.ToDouble(truckTareTotal),
                GVM = Convert.ToDouble(truckGVM)
            };
            qr = list;
        }
    }
    return qr;
}
我在
if(items.Any())
处得到错误:

非静态方法需要一个目标

我不完全理解我的问题,也找不到任何可以帮助我解决问题的东西。有人能告诉我变量
项的错误在哪里吗?谢谢大家!

编辑:

谢谢大家帮助我!你所有的编码工作都很好。我发现了我的问题,出于某种原因,它与线程有关

在我的客户端应用程序中,我在combobox selection changed事件中使用了
GetTruckInformation
方法,由于某种原因,当它运行该事件时,我的服务器端应用程序在我的所有语句之间更改线程,从而导致我的所有数据
null

以下是我的WPF/客户端方法,仅供展示:

private async void cmbChassisModel_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    using (TruckServiceClient service = new TruckServiceClient())
    {
        QuoteData data = new QuoteData();
        data.ChassisId = cmbChassisModel.GetDisplayItemId();
        var items = await service.GetTruckInformationAsync(data);
        if (items != null)
        {
            lblTareTotalAmount.Content = items.TareTotal;
            lblGVMAmount.Content = items.GVM;
        }
    }
}
没有人必须回答这个问题,我只是想让每个人都知道。:)我会设法弄清楚为什么会发生这种情况。:)

在项目上使用
.ToList()
。像这样:

var items= db.TruckItems.Where(w=>w.Model == tareTotal.Name).ToList();
否则,在执行
.Any()

编辑:

只是为了到期。这样做:

if(tareTotal==null)
    throw new Exception("The tare total is null");
var items= db.TruckItems.Where(w=>w.Model == tareTotal.Name).ToList();
对项目使用
.ToList()
。像这样:

var items= db.TruckItems.Where(w=>w.Model == tareTotal.Name).ToList();
否则,在执行
.Any()

编辑:

只是为了到期。这样做:

if(tareTotal==null)
    throw new Exception("The tare total is null");
var items= db.TruckItems.Where(w=>w.Model == tareTotal.Name).ToList();
简单:

var hasItems = (from x in db.TruckItems where x.Model == tareTotal.Name select x).Any();
如果您至少有一件物品符合您的条件,则为tru

简单:

var hasItems = (from x in db.TruckItems where x.Model == tareTotal.Name select x).Any();

如果您至少有一件物品符合您的条件,则为tru

如果没有项目与
db.ChassisModel.Where(x=>x.Id==data.chassiid)
匹配,则
tareTotal
将为空。
无论如何,如果您只想检查db.TruckItems是否包含
tareTotal.Name
,请使用此选项。这也提高了性能:
更改:

致:


如果没有与
db.ChassisModel.Where(x=>x.Id==data.chassismid)
匹配的项,则
tareTotal
将为空。
无论如何,如果您只想检查db.TruckItems是否包含
tareTotal.Name
,请使用此选项。这也提高了性能:
更改:

致:


检查此优化方法:

public QuoteResult GetTruckInformation(QuoteData data)
{
    QuoteResult qr = null;

    using (TruckDb db = new TruckDb())
    {
        var tareTotal = db.ChassisModel.Where(x => x.Id == data.ChassisId).FirstOrDefault();

        if (tareTotal != null)
        {
            var item = db.TruckItems.Where(x => x.Model == tareTotal.Name).FirstOrDefault();

            if (item != null)
            {
                var list = new QuoteResult
                {
                    TareTotal = Convert.ToDouble(item.TareTotal),
                    GVM = Convert.ToDouble(item.GVM)
                };
                qr = list;
            }
        }
    }
    return qr;
}

检查此优化方法:

public QuoteResult GetTruckInformation(QuoteData data)
{
    QuoteResult qr = null;

    using (TruckDb db = new TruckDb())
    {
        var tareTotal = db.ChassisModel.Where(x => x.Id == data.ChassisId).FirstOrDefault();

        if (tareTotal != null)
        {
            var item = db.TruckItems.Where(x => x.Model == tareTotal.Name).FirstOrDefault();

            if (item != null)
            {
                var list = new QuoteResult
                {
                    TareTotal = Convert.ToDouble(item.TareTotal),
                    GVM = Convert.ToDouble(item.GVM)
                };
                qr = list;
            }
        }
    }
    return qr;
}


可能
tareTotal
null
@GeneR tareTotal从不为null,因为它从另一个表中获取其值,该表的值在创建数据库时作为种子。您调试过它吗?并且在同一个表的同一行中有3个查询,条件相同,这是不好的code@CareTaker22如果没有与
db.ChassisModel.Where(x=>x.Id==data.ChassisId)
匹配的项,则
tareTotal
将为空可能
tareTotal
null
@GeneR tareTotal从不为空,当它从另一个表中获取其值时,该表的值将在创建数据库时作为种子。您调试过它吗?并且在同一个表的同一行中有3个查询,条件相同,这是不好的code@CareTaker22如果没有与
db.ChassisModel.Where(x=>x.Id==data.ChassisId)
匹配的项目,则
tareTotal
将为空谢谢您的回答!我仍然得到错误非静态方法需要一个目标。行
if(db.TruckItems.Any)(x=>x.Model==tareTotal.Name
0_o@CareTaker22如果没有与
db.ChassisModel.Where(x=>x.Id==data.ChassisId)匹配的项
then
tareTotal
将为空谢谢你的帮助!我在我的问题中发布了一个编辑,显示了我遇到的问题。谢谢你的回答!我仍然得到错误非静态方法需要一个目标。在
if(db.TruckItems.Any)行中(x=>x.Model==tareTotal.Name
0_o@CareTaker22如果没有与
db.ChassisModel.Where(x=>x.Id==data.ChassisId)匹配的项
然后
tareTotal
将为空谢谢你的帮助!我在我的问题中发布了一个编辑,显示了我遇到的问题。谢谢你的回答!但是我仍然得到错误非静态方法需要一个目标。你的这行:
var items=db.TruckItems.Where(w=>w.Model==tareTotal.Name.ToList())
@caretator22:您100%确定tareTotal不为null吗?谢谢您的帮助,伙计!:)如果您想查看我的原始问题,我已经更新了。谢谢您的回答!但我仍然收到错误,非静态方法需要一个目标。您的这一行:
var items=db.TruckItems.Where(w=>w.Model==tareTotal.Name).ToList();
@CareTaker22:您100%确定tareTotal不为空吗?谢谢您的帮助,伙计!:)如果您想查看我的原始问题,我已经更新了。谢谢您的所有努力!请在我的原始问题中查看我的编辑。谢谢;)谢谢您的所有努力!请在我的原始问题中查看我的编辑。谢谢;)