初始化var为空
本文关键字:为空 var 初始化 | 更新日期: 2023-09-27 18:15:23
我有一个LINQ查询,以var LinqQuery开始。但我想把LinqQuery放在if语句中所以它处理的是某些属性是否为空。我需要在if语句之外设置var LinqQuery,因为我有通过LinqQuery循环的代码。是否在if语句之外初始化LinqQuery变量。比如var LinqQuery = string。empty ?
var lQuery = (from a in gServiceContext.CreateQuery("account")
where (a["name"].Equals(lLead.AccountName) &&
a["address1_postalcode"].Equals(lLead.ZipCode) &&
a["address1_stateorprovince"].Equals(lLead.State)) ||
(a["address1_line1"].Equals(lLead.Address1) &&
a["address1_postalcode"].Equals(lLead.ZipCode) &&
a["address1_city"].Equals(lLead.City))
select new
{
Name = !a.Contains("name") ? string.Empty : a["name"],
City = !a.Contains("address1_city") ? string.Empty : a["address1_city"],
State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"],
Zip = !a.Contains("address1_postalcode") ? string.Empty : a["address1_postalcode"],
AccountId = !a.Contains("accountid") ? string.Empty : a["accountid"]
});
谢谢!
您需要将其初始化为与查询的最终形状兼容的类型,或者只是显式地键入它。
IQueryable<Foo> theQuery; // explicitly type it
// var theQuery = db.Foos.AsQueryable(); // alternately infer it
if (blah)
theQuery = db.Foos.Where(...);
else
theQuery = db.Foos.OrderBy(...);
theQuery = theQuery.Where(...); // keep chaining
//etc;
注意,一旦类型推断,您不能最初将其设置为string.Empty
,然后期望能够在Linq-to-Sql查询中使用它。这是行不通的,就像在这种情况下使用显式类型是行不通的一样。您不会期望能够这样做:
string blah = "";
blah = db.Foos.Where(f => f.Bar > 20);
用var
代替string
也不能指望成功。var
不等于dynamic
如果您需要在循环中使用它,但可能不会设置它的值,请尝试将其初始化为Enumerable.Empty<T>()