C# 如何在MVC中迭代模型以找到相似的值

C# 如何在MVC中迭代模型以找到相似的值,c#,asp.net-mvc-4,model-view-controller,model,C#,Asp.net Mvc 4,Model View Controller,Model,我正在尝试实现一个分配IP系统,MVC web应用程序的管理员可以分配IP地址,这些地址实际上可以标识位置/工作站,如下图所示 现在,我希望将这个用户分配的IP与打开MVC应用程序的机器的IP进行比较,以便从该IP地址发送的任何数据都具有指定的位置。 我在想也许有一种方法可以通过搜索或迭代来找到匹配的IP地址,我在下面尝试过实现它,但还是坚持了如何通过迭代来找到匹配的IP地址 public static string LocationIPAssign() { v

我正在尝试实现一个分配IP系统,MVC web应用程序的管理员可以分配IP地址,这些地址实际上可以标识位置/工作站,如下图所示

现在,我希望将这个用户分配的IP与打开MVC应用程序的机器的IP进行比较,以便从该IP地址发送的任何数据都具有指定的位置。 我在想也许有一种方法可以通过搜索或迭代来找到匹配的IP地址,我在下面尝试过实现它,但还是坚持了如何通过迭代来找到匹配的IP地址

    public static string LocationIPAssign()
    {
        var model = new Location();

        string workstationLocation = ServerIPName();
        foreach (Location location in model.Locations) // ICollection<Location>, IList<Location>
        {
            if (location.AssignedIP == workstationLocation)
            {
                // do whatever you have to do with your locationToAssign
            }
        }
        return workstationLocation;
    }
}
公共静态字符串位置ipassign()
{
var模型=新位置();
字符串workstationLocation=ServerIPName();
foreach(model.Locations中的位置)//ICollection,IList
{
if(location.AssignedIP==工作站位置)
{
//对你的位置做任何你必须做的事来分配
}
}
返回工作站位置;
}
}
任何提示或想法都将不胜感激

如果你要求任何进一步的代码,我很乐意帮助你

更新 位置模型

[Table("Location")]
public partial class Location
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Location()
    {
        Jobs = new HashSet<Job>();
    }

    public int LocationID { get; set; }

    [Required]
    [StringLength(30)]
    [Display(Name = "Location Name")]
    public string LocationName { get; set; }

    [RegularExpression(@"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$", ErrorMessage = "Invalid IP Address")]
    public string AssignedIP { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Job> Jobs { get; set; }
    public  ICollection<Location> Locations { get; set; }

}
[表格(“位置”)]
公共部分类位置
{
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2214:DoNotCallOverridableMethodsInConstructors”)]
公共场所()
{
Jobs=新HashSet();
}
public int LocationID{get;set;}
[必需]
[行政长官(30)]
[显示(名称=“位置名称”)]
公共字符串位置名称{get;set;}
[正则表达式(@“^(?[0-9]{1,3}\){3}[0-9]{1,3}$”,ErrorMessage=“无效IP地址”)]
公共字符串AssignedIP{get;set;}
[System.Diagnostics.CodeAnalysis.SuppressMessage(“Microsoft.Usage”,“CA2227:CollectionPropertiesShouldBreadOnly”)]
公共虚拟ICollection作业{get;set;}
公共ICollection位置{get;set;}
}

只需循环浏览您的收藏/列表并找到工作站位置:

public static string LocationIPAssign(Location locationToAssign)  
{ 
    string workstationLocation = ComputerIPName();
    foreach(Location location in Locations) // ICollection<Location>, IList<Location>
    { 
        if(location.AssignedIP == workstationLocation) 
        {
            // do whatever you have to do with your locationToAssign
        }
    }
    return workstationLocation;
}
public静态字符串LocationIPAssign(位置locationToAssign)
{ 
字符串workstationLocation=ComputerIPName();
foreach(位置中的位置)//ICollection,IList
{ 
if(location.AssignedIP==工作站位置)
{
//对你的位置做任何你必须做的事来分配
}
}
返回工作站位置;
}

您也可以对其使用Lambda表达式

Locations.where( location => location.AssignedIP == workstationLocation );

您的型号是什么?页面上的用户IP,因此将有许多工作站访问内联网上的MVC应用程序,我需要这些工作站的IP地址,以便MVC应用程序可以识别每个工作站并为其分配名称。是否可以发布您的模型?@stefankmitph已用位置模型更新。是否要通过
位置
ICollection
?我试图实现此功能,但得到了一个答案“对象引用未设置为对象实例”错误,查找错误来自foreach@goldeneye哪个对象是空的?只是一个猜测:模型中的
Locations
是空的吗?对于这个愚蠢的问题,我感到有点困惑,很抱歉,但是如果我写“publicicollectionlocations{get;set;}”“在模型中,它是否应该使模型类成为一个集合?如果是,那么“位置”不是空的,如果不是,那么“位置”是空的……你明白我的意思吗?我明白。您正在使用实体框架吗?