C# C、 SQL Server,Linq to SQL-在查询结果(类列表)中找不到项
我试图列出从数据库收集的类对象。我能够使用LINQtoSQL类,以便使用Linq生成类对象列表 我能够在列表中查找内容,但是当我查找不在列表中的内容时,它会失败空错误异常。我想测试null,或者弄清楚我的项目是否不在列表中,但是C# C、 SQL Server,Linq to SQL-在查询结果(类列表)中找不到项,c#,sql-server,list,class,linq-to-sql,C#,Sql Server,List,Class,Linq To Sql,我试图列出从数据库收集的类对象。我能够使用LINQtoSQL类,以便使用Linq生成类对象列表 我能够在列表中查找内容,但是当我查找不在列表中的内容时,它会失败空错误异常。我想测试null,或者弄清楚我的项目是否不在列表中,但是 q.Find(x => (x.fid1 == "abc123")).fid1 = "9454a3" == null 生成空错误异常。这是我第一次使用LINQtoSQL类,所以任何关于我如何使用它的输入都是受欢迎的 class TestClass { p
q.Find(x => (x.fid1 == "abc123")).fid1 = "9454a3" == null
生成空错误异常。这是我第一次使用LINQtoSQL类,所以任何关于我如何使用它的输入都是受欢迎的
class TestClass
{
public class FIDClass
{
public System.String fid1 { get; set; }
public System.String fid2 { get; set; }
public System.Int32 fid3 { get; set; }
}
static void Main()
{
// linq to SQL class
DataClasses1DataContext db = new DataClasses1DataContext();
var q = (from dbfile in db.GetTable<DataTable>()
where dbfilefid3 == 15
select new FIDClass
{
fid1 = dbfile.fid1,
fid2 = dbfile.fid2,
fid3 = (int) dbfile.fid3
}).ToList<FIDClass>();
// if it's found, the following works fine
// if it's not found, I get a null error exception on the if stmt
if (q.Find(x => (x.fid1 == "abc123")).fid1 == "abc123" )
{ MessageBox.Show("Found");
}
}
}
如果您有任何帮助、想法和反馈,我们将不胜感激。您应该检查空值,如下所示:
if (q.Find(x => x.fid1 == "abc123") != null )
{ MessageBox.Show("Found");
}
else
{ MessageBox.Show("NOT Found");
}
如果这解决了您的问题,请将其标记为已回答。您应该检查空值,如下所示:
if (q.Find(x => x.fid1 == "abc123") != null )
{ MessageBox.Show("Found");
}
else
{ MessageBox.Show("NOT Found");
}
如果这解决了您的问题,请将其标记为已回答。首先,它是2017年,不要使用Linq to SQL。它已经贬值了一段时间。 其次,您的查询根本没有优化。您正在使用ToList方法从服务器中提取所有数据,这是不好的,您希望使用iQuery来执行查询操作。
您遇到的问题是,如果找不到对象,find方法将返回null。因此,如果您只想检查是否存在满足条件Anyx=>x.fid1==abc123的对象,请使用Any方法。首先,不要使用Linq to SQL,因为它已经贬值了一段时间。 其次,您的查询根本没有优化。您正在使用ToList方法从服务器中提取所有数据,这是不好的,您希望使用iQuery来执行查询操作。
您遇到的问题是,如果找不到对象,find方法将返回null。因此,如果您只想检查我的iPad上是否有满足条件Anyx=>x.fid1==abc123的对象,请使用Any方法,因此无法测试此结果。 根据.net版本的不同,您可以尝试空合并
if (q.Any(x => (x?.fid1 == "abc123")) )
否则,
如果q.Anyx=>x=null&&x.fid1==abc123在我的iPad上,所以无法测试。 根据.net版本的不同,您可以尝试空合并
if (q.Any(x => (x?.fid1 == "abc123")) )
否则,
如果q.Anyx=>x=null&&x.fid1==abc123谢谢你,Rajnieesh-抓得好。这是在简化我的代码时发生的,所以它并没有像我最初使用==,那样解决我的问题。谢谢,Rajnieesh-很好。这是在简化我的代码时发生的,因此它不会像我最初使用==。谢谢那样解决我的问题。因此,只需执行常规查询,并使用读取器填充类列表,或者您可以给出一个使用iQueriable的简单示例。我现在就用谷歌搜索。你是说我不应该使用LINQtoSQL类吗?使用它是LINQtoSQL的现代版本。对于IQueriable,这里有一个谢谢你的菲利普!我有点害怕实体框架,因为它似乎增加了很多开销。我会看看你的链接。别担心,它和Linq到SQL差不多。有了VS,就可以快速入门,有一些模板可以构建入门所需的大部分内容。谢谢。因此,只需执行常规查询,并使用读取器填充类列表,或者您可以给出一个使用iQueriable的简单示例。我现在就用谷歌搜索。你是说我不应该使用LINQtoSQL类吗?使用它是LINQtoSQL的现代版本。对于IQueriable,这里有一个谢谢你的菲利普!我有点害怕实体框架,因为它似乎增加了很多开销。我会看看你的链接。别担心,它和Linq到SQL差不多。有了VS,就可以快速入门,有一些模板可以构建您入门所需的大部分内容。我正在考虑实体框架。已经很晚了,昨天晚上,我认为您不需要空检查。任何一个都应该足够了,这很有效。我正在考虑实体框架。已经很晚了,昨天晚上,我认为您不需要空检查。任何一个都应该足够了。