如何根据 .Net 中的条件将列表分配给变量
How to Assign List to a variable based on a condition in .Net
我必须 POST 客户详细信息(列出硬编码仅供参考)并且我还想 POST 具有唯一 ID 的列表。
我已经编写了一个简单的 For 循环,仅当我的详细信息 POSTED 具有唯一 ID 时,它才会将客户详细信息添加到列表中,但我在这里收到一个错误,提示“并非所有代码路径 returns 一个值”。请告诉我是否还有其他简单的方法。
public class CustomerController : ControllerBase
{
List<Customer> customers = new List<Customer>();
public CustomerController()
{
customers.Add(new Customer { Id = "1", FirstName = "Batman", LastName = "Gotham", DOB = "17/04/1978", SSN = "1000000000" });
customers.Add(new Customer { Id = "2", FirstName = "Superman", LastName = "Krypton", DOB = "18/04/1938", SSN = "2000000000" });
customers.Add(new Customer { Id = "3", FirstName = "Wonder Woman", LastName = "Themyscira", DOB = "22/03/1976", SSN = "3000000000" });
}
[HttpPost]
public IActionResult Post([FromBody]Customer customer)
{
int n = customers.Count;
for (int i = 0; i < n; i++)
{
if (customer.Id != customers[i].Id)
{
customers.Add(customer);
string msg = "done";
return Ok(msg);
}
}
}
}
一个方法每次都需要return一些东西(return null
也可以),所以当return在if
语句中时,它可能不会输入那个因此,所有循环迭代的 if 语句都不是 return
任何东西,因此您需要在 else
语句中或 if
语句之外有另一个 return
。
您收到 “并非所有代码路径 return 都是一个值” 错误,因为该方法可能在控制流根本没有进入 if 语句的情况下结束。在循环结束后你需要 return 一些东西。例如,return BadRequest(msg);
但无论如何你的逻辑是有缺陷的。在列表中发现不同的 ID 后立即添加客户,但在列表的更下方可能有具有相同 ID 的客户。
此外,您不必自己执行对 Id 的搜索。只需使用现有的 Enumerable.Any Method.
[HttpPost]
public IActionResult Post([FromBody] Customer customer)
{
if (customers.Any(c => c.Id == customer.Id)) {
string msg = "duplicate";
return BadRequest(msg);
} else {
string msg = "done";
customers.Add(customer);
return Ok(msg);
}
}
我必须 POST 客户详细信息(列出硬编码仅供参考)并且我还想 POST 具有唯一 ID 的列表。
我已经编写了一个简单的 For 循环,仅当我的详细信息 POSTED 具有唯一 ID 时,它才会将客户详细信息添加到列表中,但我在这里收到一个错误,提示“并非所有代码路径 returns 一个值”。请告诉我是否还有其他简单的方法。
public class CustomerController : ControllerBase
{
List<Customer> customers = new List<Customer>();
public CustomerController()
{
customers.Add(new Customer { Id = "1", FirstName = "Batman", LastName = "Gotham", DOB = "17/04/1978", SSN = "1000000000" });
customers.Add(new Customer { Id = "2", FirstName = "Superman", LastName = "Krypton", DOB = "18/04/1938", SSN = "2000000000" });
customers.Add(new Customer { Id = "3", FirstName = "Wonder Woman", LastName = "Themyscira", DOB = "22/03/1976", SSN = "3000000000" });
}
[HttpPost]
public IActionResult Post([FromBody]Customer customer)
{
int n = customers.Count;
for (int i = 0; i < n; i++)
{
if (customer.Id != customers[i].Id)
{
customers.Add(customer);
string msg = "done";
return Ok(msg);
}
}
}
}
一个方法每次都需要return一些东西(return null
也可以),所以当return在if
语句中时,它可能不会输入那个因此,所有循环迭代的 if 语句都不是 return
任何东西,因此您需要在 else
语句中或 if
语句之外有另一个 return
。
您收到 “并非所有代码路径 return 都是一个值” 错误,因为该方法可能在控制流根本没有进入 if 语句的情况下结束。在循环结束后你需要 return 一些东西。例如,return BadRequest(msg);
但无论如何你的逻辑是有缺陷的。在列表中发现不同的 ID 后立即添加客户,但在列表的更下方可能有具有相同 ID 的客户。
此外,您不必自己执行对 Id 的搜索。只需使用现有的 Enumerable.Any Method.
[HttpPost]
public IActionResult Post([FromBody] Customer customer)
{
if (customers.Any(c => c.Id == customer.Id)) {
string msg = "duplicate";
return BadRequest(msg);
} else {
string msg = "done";
customers.Add(customer);
return Ok(msg);
}
}