我有这些实体。
List<Option> lstoption1 = new List<Option>();
Option opt = new Option();
opt.OptionText = "Text1";
lstoption1.add(opt)
Option opt2 = new Option();
opt2.OptionText = "Text2";
lstoption1.add(opt2)
Option opt3 = new Option();
opt3.OptionText = "Text3";
lstoption1.add(opt3)
我想在新的Option.so中选择OptionText =“Text2”。我写了这个。
Option optnew =(from i in lstoption1 where i.OptionText ="Text2" select i) as Option
但它抛出一个错误。我们如何使用linq。
感谢您的帮助。
答案 0 :(得分:0)
firstordefault()
以便只返回一个元素。使用==
代替=
运营商
Option optnew =(from i in lstoption1 where i.OptionText == "Text2" select i).firstordefault()
答案 1 :(得分:0)
就像在if语句中一样,必须使用double =表示相等。我对你的LINQ的调整没有经过测试,但应该接近你需要的。
Option optnew =((from i in lstoption1 where i.OptionText == "Text2" select i).SingleOrDefault()) as Option;
您需要指明您只期望来自where子句的一个结果(SingleOrDefault())。这意味着你要么拥有一个结果,要么没有(null) - 并且因为你使用“as Option”进行转换,所以null值是有效的并且不会抛出异常。