我想在下拉列表中创建 `@Html.ActionLink(model.country, "Details", "Country")' 作为选项..因为稍后,不同的角色访问将看到不同的链接...
控制器
public ActionResult Index()
{
CountryList = db.CountryListTable.Select(x => x.countryName).ToList();
ViewBag.ctr = CountryList;
return View();
}
Run Code Online (Sandbox Code Playgroud)
看法
@foreach (var item in @ViewBag.ctr)
{
<span>@item</span>
<span>
@* @Html.ActionLink((string)@item, "Details", "Country"); *@ @* this part throw error due to null *@
</span>
<br />
}
Run Code Online (Sandbox Code Playgroud)
@item不为空...我不知道为什么它在封装时抛出空值@html.ActionLink...
仅供参考,我使用 .netFramework 4.0 和 MVC4...
我对 MVC n .netFramework 很陌生
我有一个 IEnumerable,我正在通过 .Where 表达式对其应用多个过滤器。我的代码看起来像这样
public List<MyObject> FilteringFunction(List<MyObject> listToFilter, List<Filter> filters)
{
// A dirty way to have an enumerable instead of List
var enumerableToFilter = listToFilter.Where(x => true);
foeach(var filter in filters)
{
enumerableToFilter = enumerableToFilter.Where(x => x.Value.Contains(filter.Value));
}
return enumerableToFilter.ToList();
}
Run Code Online (Sandbox Code Playgroud)
我是否只遍历我的集合一次?(因为我只有一个使用 LINQ to SQL 的数据库调用)
我有一个客户类型对象列表,当我遍历该列表时,我希望能够遍历每个客户的属性。然后我想将该属性值打印为字符串。我收到 StackOverFlowException 错误。
让我先说:
提前致谢!
using Dapper;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Xml.Linq;
using System.Reflection.Emit;
using System.Reflection;
using System.Collections;
namespace AtoCLib
{
public class DataAccessLayer
{
public static List<Customer> GetCustomerList(string startChar)
{
string sql = $"SELECT TOP (10) P.LastName, [CustomerID],[PersonID] ,[StoreID] ,[TerritoryID] ,[AccountNumber] FROM [AdventureWorks2017].[Sales].[Customer] C INNER JOIN [Person].[Person] P ON C.CustomerID = P.BusinessEntityID WHERE P.LastName >= '{startChar}'";
List<Customer> CustomerList = new List<Customer>();
try
{
using (var connection = new SqlConnection("Data Source=SHCP-2035;Initial Catalog=AdventureWorks2017;Integrated Security=True"))
{ …Run Code Online (Sandbox Code Playgroud) 我想在处理当前项目并迭代时访问下一个和上一个项目(如果在范围内)IEnumerable<object>,它缺少索引器(据我所知)。
我不想需要一个List<object>集合或一个数组来实现这一点,尽管这是我现在知道的唯一选择。
如果可能,我也更愿意避免使用 Linq 表达式。
目前我的方法是这样定义的:
public static void PrintTokens(IEnumerable<object> tokens)
{
foreach (var token in tokens)
{
// var next = ?
// var prev = ?
}
}
Run Code Online (Sandbox Code Playgroud) 这是我的错误消息:“IEnumerable”不包含“FirstOrDefaultAsync”的定义,并且找不到接受“IEnumerable”类型的第一个参数的可访问扩展方法“FirstOrDefaultAsync”(您是否缺少 using 指令或程序集引用? )
我已执行以下操作,但错误仍然存在:
我没有忘记使用 await,根据此链接:任务不包含“FirstOrDefault”的定义
我引用了 Sytem.Core 并导入了 System.Linq 和 System.Data.Entity。(System.Linq 不明确/灰色,因此未使用),根据此链接:DbSet 不包含 FirstOrDefault 的定义?
这是我的 .cshtml.cs 代码,其中正在生成错误(第 34 行):
using System.Collections.Generic;
using System.Linq;
using System.Data.Entity;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using Movies.Models;
namespace Movies.Pages.MediaDetails
{
public class DetailsModel : PageModel
{
private readonly Movies.Models.MoviesContext _context;
public DetailsModel(Movies.Models.MoviesContext context)
{
_context = context;
}
MovieDataAccessLayer objmovie = new MovieDataAccessLayer();
public Movies Movies { get; set; }
public async Task<IActionResult> OnGetAsync(byte? id)
{
if …Run Code Online (Sandbox Code Playgroud) 我知道您可以使用enumerable.Any()而不是有效enumerable.Count()地检查集合中是否有任何内容。
是否有等效的检查尺寸至少是更大的尺寸?
例如,我将如何有效地执行enumerable.Count() > 3.
我的目标是Foo从与Boo枚举条件匹配的 foos 列表中返回第一个项目,并且应该按Boo示例中所示的值确定优先级,如果没有任何项目与条件匹配,则只返回第一个项目。
该模型:
class Foo
{
E_Boo Boo { get; set; }
}
enum E_Boo
{
Undefined = 0,
Jessie = 1,
Abby = 2,
Felix = 3,
Lacey = 4,
Lucia = 5,
Anisa = 6
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,它有效:
public Foo GetFooByBooPriority(IEnumerable<Foo> foos)
{
if(foos.Any(x => x.Boo == E_Boo.Abby))
return foos.First(x => x.Boo == E_Boo.Abby);
else if (foos.Any(x => x.Boo == E_Boo.Lacey))
return foos.First(x => x.Boo == E_Boo.Lacey);
else if (foos.Any(x => x.Boo …Run Code Online (Sandbox Code Playgroud) 我有我只想返回一条记录的方法,但我不能使用FirstOrDefault. 与数据库的连接工作正常,我已经尝试过了。
我想找到传递一些值的记录。
这是我尝试过的:
public async Task<CorridoioWebResponse> GetCorridoiWeb_ID(string stab, string maga, string area, Int32 cors)
{
string strsql = string.Empty;
string strErrore = string.Empty;
string strConnessione = _configuration.GetConnectionString("ConnDB");
SqlServerCompiler compiler = new SqlServerCompiler();
CorridoioWebResponse coridoio;
using (IDbConnection cn = new SqlConnection(strConnessione))
{
using (var db = new QueryFactory(cn, compiler))
{
strsql = "SELECT * from tmhit.CORRIDOI_CORSIE WHERE STAB=" + stab + "AND MAGA =" + maga + "AND AREA=" + area + "AND CORS=" + cors;
//strsql = …Run Code Online (Sandbox Code Playgroud) 我不明白引擎盖下发生了什么。我有一个简单的字符串:
var aux = "Hello";
Run Code Online (Sandbox Code Playgroud)
如果我运行:
aux.Any();
Run Code Online (Sandbox Code Playgroud)
它返回True。执行的Any()在 System.Core dll 中:
在引擎盖下是否有一个演员表,其中字符串被转换为一个可枚举的字符并且Any()验证列表是空的还是......?
提前致谢!
我想知道我们应该使用的确切位置IEnumberable<T>
我知道如何IEnumerable<T>工作和返回IEnumerator<T>以及所有这些,但最终目标IEnumerable<T>是从集合中查询数据不是吗?这就是我们已经可以使用 foreach() 循环做到的事情吗?那么什么时候使用IEnumerable<T>呢?IEnumerable<T>查询集合的唯一选项的实际场景是什么?
ienumerable ×10
c# ×9
.net ×2
.net-core ×2
asp.net ×2
linq ×2
asp.net-mvc ×1
async-await ×1
count ×1
foreach ×1
generics ×1
ienumerator ×1
linked-list ×1
performance ×1
properties ×1
razor ×1
razor-pages ×1
sql ×1
sql-server ×1
t-sql ×1