C# Linq-仅当!=无效的

C# Linq-仅当!=无效的,c#,linq,C#,Linq,我有一个自动完成函数的方法。 我只想在地址!=空 有点脏,但这可以用。 首先,我们将x.Name添加到字符串中。 然后我们添加计算值。 条件true value:如果条件为true,则false value将返回第一个值true value,否则返回 我们检查x.Address1是否为空。如果是-则返回$-{x.Address1},否则返回空字符串 括号只是帮助编译器更好地理解我们。我们说这个表达是一回事 更新: 您正试图从数据库请求自动完成数据。 它使用LINQtoSQL特性,尝试将C代码转换

我有一个自动完成函数的方法。 我只想在地址!=空

有点脏,但这可以用。 首先,我们将x.Name添加到字符串中。 然后我们添加计算值。 条件true value:如果条件为true,则false value将返回第一个值true value,否则返回

我们检查x.Address1是否为空。如果是-则返回$-{x.Address1},否则返回空字符串

括号只是帮助编译器更好地理解我们。我们说这个表达是一回事

更新: 您正试图从数据库请求自动完成数据。 它使用LINQtoSQL特性,尝试将C代码转换为SQL

.Where可以完美地工作,但LINQ to SQL不支持将两个字符串相加的字符串串联

您可能需要:

首先使用LINQ选择您的数据 替换。用foreach循环选择方法并自己构建字符串数组。 同样。。 …如果运行ASP.NET Core,请不要使用JsonResult。
您可以返回普通对象,它们将自动转换为JSON。

您可以在下面找到使用三元运算符解决问题的另一种方法,这不是更有效的方法,但更简单

public JsonResult GetClients(string term)
{
   List<string> ClientsJson;
   ClientsJson = db.Clients.Where(x => x.Name.StartsWith(term))
                             .Select(selector: x => x.Name + ((x.Adress1 == null) ? " " : "-" + x.Adress1)).ToList();

   return Json(ClientsJson, JsonRequestBehavior.AllowGet);
} 

正在添加解释。是否存在任何编译器错误?运行时异常?或者它只是没有任何错误就无法工作?我得到:jquery.js:10254https://localhost:44381/Home/GetClients?term=test 控制台中有500个。@John不,对linq、c和mvc来说都不是很新。谢谢你指出这一点!500意味着内部服务器错误,这是一个HTTP状态码。服务器在运行时遇到运行时异常错误。请检查您的Web服务器控制台。它可能会包含错误详细信息。@CSP实际上是我答案的最新副本,但可以。
public JsonResult GetClients(string term)
{
     List<string> ClientsJson;
     ClientsJson = db.Clients.Where(x => x.Name.StartsWith(term))
                             .Select(selector: x => $"{x.Name}{(x.Address1 != null ? $" - {x.Address1}" : "")}").ToList();

     return Json(ClientsJson, JsonRequestBehavior.AllowGet);
}
$"{x.Name}{(x.Address1 != null ? $" - {x.Address1}" : "")}"
public JsonResult GetClients(string term)
{
   List<string> ClientsJson;
   ClientsJson = db.Clients.Where(x => x.Name.StartsWith(term))
                             .Select(selector: x => x.Name + ((x.Adress1 == null) ? " " : "-" + x.Adress1)).ToList();

   return Json(ClientsJson, JsonRequestBehavior.AllowGet);
}