如何将一个列表单个项目与C#linq中的另一个列表项目进行比较? [英] How to compare one list single item with another list items in C# linq?

查看:56
本文介绍了如何将一个列表单个项目与C#linq中的另一个列表项目进行比较?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我有两个名单。



一个列表是中心我在哪里将城市(ID)作为项目(以逗号分隔)。



另一个列表用于我只有 city <的会话/ u>(ID)作为项目。



现在我想将会话城市与中心城市进行比较。



会话将只有一个城市,例如:hyd。



其中,

中心将有城市,如:德里,孟买, Hyd ...



i想要比较session-city == center-city的会话



< b>我尝试了什么:



i尝试使用contains,findall,where,select ...

 SessionController.Instance.All.FindAll(
item =>
item.ProgramID == programId&& / * Resource Path:Program * /
//item.SectorID .Contains(item.SectorID)&& / *资源路径:Sector * /
//item.CenterGroup.CenterIDs.Split(',').ToList().Contai ns(center.ID.ToString())
item.CityID == cityIds)//错误。
选择(item => new {id = item.ID,value = item.NameEN})





plz guys ,帮帮我,我怎么比较。



谢谢

解决方案

基于 OriginalGriff [ ^ ],我将共享另一个解决方案,它使用 Where + 任何 Linq方法:



 var found = session 
。 Where(s => center
.SelectMany(c => c.Split(new char [] {','},StringSplitOptions.RemoveEmptyEntries))
.Any(z => z = = s));





如果 CityId 的类型为 Int ,您需要将拆分的字符串转换为整数:

 .Any(z => Convert.ToInt32(z)= = s)); 





进一步详情请见:

String.Split方法(Char [],StringSplitOptions)(系统) [ ^ ]

如何to:使用String.Split解析字符串(C#编程指南) [ ^ ]

Enumerable.Any(TSource)方法(IEnumerable(TSource),Func(TSource,Boolean))(System.Linq) [ ^ ]


如果您的意思是:

 List< string> centers =  new  List< string>(); 
centers.Add( 123,456,789);
centers.Add( 666,333,999);
List< string> session = new List< string>();
session.Add( 456);
session.Add( 666);
session.Add( 888);

然后尝试:

  var  found = session.Where(s =  >  centers.Where(c = >  c.Split(' ,')。包含(s))。Count()!=  0 ); 


Hi Guys,

I have two lists.

one list is for center where i have cities(ID's) as item(separated by commas).

another list is for session where i have only city(ID) as item.

now i want to compare session city with center cities.

session will have only one city, like: hyd.

Where,
Center will have cities, like: Delhi, Mumbai, Hyd...

i want to compare session where session-city == center-city

What I have tried:

i tried using contains, findall, where, select...

SessionController.Instance.All.FindAll(
item => 
item.ProgramID == programId && /* Resource Path : Program */
//item.SectorID.Contains(item.SectorID) && /* Resource Path : Sector */
//item.CenterGroup.CenterIDs.Split(',').ToList().Contains(center.ID.ToString())
item.CityID==cityIds)//error.
Select(item => new { id = item.ID, value = item.NameEN })



plz guys, help me, how can i compare.

Thanks

解决方案

Based on example provided by OriginalGriff[^], i'd share another solution, which uses Where + Any Linq methods:

var found = session
    .Where(s => centers
        .SelectMany(c => c.Split(new char[]{','}, StringSplitOptions.RemoveEmptyEntries))
        .Any(z=>z==s));



In case when CityId is type of Int, you need to convert splited string to integer:

.Any(z=>Convert.ToInt32(z)==s));



For further details, please see:
String.Split Method (Char[], StringSplitOptions) (System)[^]
How to: Parse Strings Using String.Split (C# Programming Guide)[^]
Enumerable.Any(TSource) Method (IEnumerable(TSource), Func(TSource, Boolean)) (System.Linq)[^]


If you mean something like:

List<string> centers = new List<string>();
centers.Add("123,456,789");
centers.Add("666,333,999");
List<string> session = new List<string>();
session.Add("456");
session.Add("666");
session.Add("888");

Then try:

var found = session.Where(s => centers.Where(c => c.Split(',').Contains(s)).Count() != 0);


这篇关于如何将一个列表单个项目与C#linq中的另一个列表项目进行比较?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆