Linq 检查隐式类型变量是否包含特定值
我有一个隐式变量,它获取一个包含SQL查询(LINQ)结果的列表。 此集合表示以前选定的列表的现有客户端Linq 检查隐式类型变量是否包含特定值,linq,var,Linq,Var,我有一个隐式变量,它获取一个包含SQL查询(LINQ)结果的列表。 此集合表示以前选定的列表的现有客户端 通过一个存储过程,我获取一组新的客户机,这些客户机将用于填充下拉列表。迭代这组数据时,如果已经包含在现有条目列表中,我将排除这些记录 如何使用隐式类型的变量进行此检查 var existingClients = (from doc in TBL_Documents join c in TBL_CONTACT on doc.CONTACTID eq
通过一个存储过程,我获取一组新的客户机,这些客户机将用于填充下拉列表。迭代这组数据时,如果已经包含在现有条目列表中,我将排除这些记录 如何使用隐式类型的变量进行此检查
var existingClients = (from doc in TBL_Documents
join c in TBL_CONTACT on doc.CONTACTID equals c.CONTACTID
where doc.DOCID.Equals(DocID)
select new { c.CONTACTID, c.FULLNAME }).ToList();
var resultSet = sp_ActiveContacts(index).ToList();
foreach (var record in resultSet)
{
//How could I achieve something like this if condition (like a List)?
if (!existingClients.Contains(record.CONTACTID))
{
optionTags += "<option value=" + record.CONTACTID + ">" + record.Name + "</option>";
}
}
var existingClients=(来自TBL\U文档中的文档
在文档上的TBL_联系人中加入c。CONTACTID等于c.CONTACTID
其中doc.DOCID.Equals(DOCID)
选择new{c.CONTACTID,c.FULLNAME}).ToList();
var resultSet=sp_ActiveContacts(index.ToList();
foreach(结果集中的var记录)
{
//如果条件满足(如列表),我如何实现这样的目标?
如果(!existingClients.Contains(record.CONTACTID))
{
optionTags+=“”+记录名称+“”;
}
}
如果可能,我希望创建一个临时列表来存储用于If条件的CONTACTID。匿名类型通过检查每个属性来测试是否相等,因此您可以执行以下操作:
if (!existingClients.Contains(new { record.CONTACTID, record.FULLNAME }))
(假设您的记录
变量具有全名
属性。否则,只需使用适当的值构造匿名对象即可。)
有关更多信息,请参阅
编辑
更简单的可能是:
if (!existingClients.Any(c => c.CONTACTID == result.CONTACTID))
谢谢马特的回答!就性能而言,您的建议与使用临时列表存储ID并检查此列表之间有什么区别
...
List<Guid> existIDs = new List<Guid>();
foreach (var c in existingContacts)
{
existIDs.Add(c.CONTACTID);
}
var resultSet = db.sp_PagingActiveContacts(idx, userLogin, range).ToList();
foreach (var record in resultSet)
{
if (!existIDs.Contains(new {record.CONTACTID}))
{ ....
。。。
List existIDs=新列表();
foreach(现有触点中的var c)
{
existIDs.Add(c.CONTACTID);
}
var resultSet=db.sp_PagingActiveContacts(idx,userLogin,range.ToList();
foreach(结果集中的var记录)
{
如果(!existIDs.Contains(new{record.CONTACTID}))
{ ....
我认为这样做不会带来任何好处。.Any()调用几乎同样快,而且IMHO更具可读性。这肯定更具可读性。并且不需要创建与记录变量相关的其他值(在您的示例中)。