我编辑我的帖子,因为让我们假设3个方法从数据库表表中返回行是:docTags,tags和docs docTags是中间表一个docs(文档)可以有很多标签,一个标签可以属于多个docs我怎么能得到: TagKey ="123"其中docTags.Add(new Configuration(1,1)); 课程{
static void Main(string[] args)
{
}
}
public class Configuration
{
public int DocID { get; set; }
public int TagID { get; set; }
public string Name { get; set; }
public string DocKey { get; set; }
public string TagKey { get; set; }
public Configuration(int _docId,string _name, string _docKey)
{
DocID = _docId;
Name = _name;
DocKey = _docKey;
}
public Configuration(int _tagId,string name, string _dockey,string _tagKey)
{
TagID = _tagId;
Name = name;
TagKey = _tagKey;
}
public Configuration(int _tagId, int _docId)
{
TagID = _tagId;
DocID = _docId;
}
public static List<Configuration> getDocType()
{
List<Configuration> docs = new List<Configuration>();
docs.Add(new Configuration(1,"contract", "xxx"));
docs.Add(new Configuration(2,"Action", "yyy"));
return docs;
}
public static List<Configuration> getTagName()
{
List<Configuration> tags = new List<Configuration>();
tags.Add(new Configuration( 1,"contractid", "123"));
tags.Add(new Configuration(2,"SuperDuper", "332123"));
tags.Add(new Configuration(22, "rama", "yyy"));
tags.Add(new Configuration(32, "aktiv", "123456"));
tags.Add(new Configuration(42, "data ","xx764fhx"));
return tags;
}
public static List<Configuration> getDocTags()
{
List<Configuration> docTags = new List<Configuration>();
docTags.Add(new Configuration(1, 2));
docTags.Add(new Configuration(1, 1));
docTags.Add(new Configuration(1, 22));
docTags.Add(new Configuration(2, 2));
docTags.Add(new Configuration(2, 32));
return docTags;
}
}
Run Code Online (Sandbox Code Playgroud)
}
你想要一个Join:
var commonUsers = (from t in tags
join d in docs on t.DocKey equals d.DocKey
select t)
.Distinct(); // to remove duplicates
Run Code Online (Sandbox Code Playgroud)
或者另一种方式
var commonUsers = tags.Where(t => docs.Any(d => d.DocKey == t.DocKey));
Run Code Online (Sandbox Code Playgroud)
第二种方法较短,但第一种方法可能表现更好.
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |